创建新对象时,将userid保存在数据库中

时间:2013-07-08 10:56:44

标签: asp.net-mvc asp.net-mvc-4 simplemembership user-management userid

我有一个Controller,在Create操作中我需要用户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 4的UserProfile提供的SimpleMembership表。

MVC 4中管理整个应用程序userID的最佳做法是什么?

我是否必须在每个Entity类中包含User属性?

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

1 个答案:

答案 0 :(得分:2)

您可以使用此行从userId表中获取UserProfiles

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;
            }
        }