0

我有一个控制器,在创建操作中我需要用户 ID。

这是控制器。

    public ActionResult Create(MyCreateViewModel model)
    {
        if (ModelState.IsValid)
        {
            var myobject = new MyObject
            {
                Attrib1 = DateTime.Now.Date,
                Attrib2 = model.Etichetta,
                UserId = // I need the user ID...
            };

            // Save the object on database...                

            return RedirectToAction("Index");
        }
        return View(model);
    }

我正在使用MVC 4UserProfile提供的表格。SimpleMembership

userIDMVC 4 中管理跨应用程序的最佳实践是什么?

我必须在每个实体类中包含一个用户属性吗?

我应该使用Session[]变量还是什么?

4

1 回答 1

2

您可以使用此行userIdUserProfiles表中获取。

var userId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name);

您还可以使用此功能获取用户完整的个人资料,包括您可能填充的任何自定义列。

public static UserProfile GetUserProfile()
        {
            using (var db = new UsersContext())
            {
                var userId = WebSecurity.GetUserId
                            (HttpContext.Current.User.Identity.Name);
                var user = db.UserProfiles
                             .FirstOrDefault(u => u.UserId == userId);
                if (user == null)
                {
                    //couldn't find the profile for some reason
                    return null;
                }
                return user;
            }
        }
于 2013-07-08T11:46:24.400 回答