我有一个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[]
变量还是什么?
答案 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;
}
}