链接模型到SimpleAuthentication类
本文关键字:SimpleAuthentication 模型 链接 | 更新日期: 2023-09-27 18:08:10
在MVC4的大量教程中,我从未看到它们将经过身份验证的用户链接到包含属于该用户的数据的表。我上下打量了一番,却一无所获。
以一个Note表为例,每个用户将向数据库存储一个Note。如何使用我的简单类并将经过身份验证的用户链接到它?下面是我觉得我得到的最接近的结果。
public class Note
{
public int NoteId { get; set; }
[ForeignKey("UserId")]
public virtual UserProfile CreatedBy { get; set; }
public string Description { get; set; }
}
任何人都有一个很好的教程链接或可以解释我应该如何链接我的身份验证用户(使用simpleauthentication)模型在ASP.net MVC4?
将您的实体更改为:
public class Note
{
[Key]
[ForeignKey("UserProfile"), DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId{ get; set; }
public virtual UserProfile UserProfile { get; set; }
public string Description { get; set; }
}
然后,在你的Note控制器或任何你创建Notes的控制器中:
[Authorize]//Place this on each action or controller class so that can can get User's information
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(CreateViewModel model)
{
if (ModelState.IsValid)
{
var db = new EfDb();
try
{
var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name)
?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name);
if (userProfile != null)
{
var note= new Note
{
UserProfile = userProfile,
Description = model.Description
};
db.Notes.Add(note);
db.SaveChanges();
return RedirectToAction("About", "Home");
}
}
catch (Exception)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
throw;
}
}
return View(model);
}