请耐心等待,我是MVC的新手。我创建了一个名为"Book"的模型,它代表一本教科书,在我的IdentityModel中我添加了以下内容:
public class User : IUser
{
// ...
[Key]
public string Id { get; set; }
public string UserName { get; set; }
// Code First will use this to create a foreign key in book
public virtual ICollection<Book> Uploaders { get; set; }
}
这在我的图书表中创建了一个外键,这正是我想要的。现在,在我的图书控制器中,我只想在用户点击"创建"时将图书链接到用户。这就是我被卡住的地方
//
// POST: /Book/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Book book)
{
if (ModelState.IsValid)
{
// Save uploader here
// book.Uploader = User.Identity;
db.Books.Add(book);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(book);
}
关于您的图书模型:
public virtual User User {get;set;}
public int UserId {get;set;}
并将其分配到控制器中。
book.User = User;
当前用户的userId可以在Controller的user属性声明中找到。
假设模型:
public class Book
{
[Key]
public int Id { get; set; }
public virtual BookUser User { get; set; }
[ForeignKey("User")]
public string UserId { get; set; }
}
然后,您可以设置UserId:
//
// POST: /Book/Create
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize] // must be authenticated to be able to set UserId
public ActionResult Create(Book book)
{
if (ModelState.IsValid)
{
UserId = ((ClaimsPrincipal)User).FindFirst(c => c.Type == ClaimTypes.NameIdentifier).Value`
db.Books.Add(book);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(book);
}