我正在尝试为应用程序用户的子表添加创建控制器方法。我无法弄清楚如何填充用户ID。我正在学习mvc,这看起来像是一个基本概念,但我无法让它发挥作用。这是我的课。
public class Ticket
{
[Key]
public long Id { get; set; }
[StringLength(128), MinLength(3)]
[ForeignKey("AspNetUser")]
public virtual string AspNetUserId { get; set; }
public virtual ApplicationUser AspNetUser { get; set; }
public DateTime Date { get; set; }
public string Request { get; set; }
}
这是我的索引 - 希望只提取与当前用户相关的记录。我没有种子数据设置,所以我必须让create for working来测试它,但视图出现了。
public ActionResult Index()
{
//var userId = User.Identity.GetUserId();
var userId = UserManager.FindById(User.Identity.GetUserId());
var tickets = db.Tickets.Where(m => m.AspNetUser == userId); ;
return View(tickets.ToList());
}
我的创建获取也会出现,但似乎没有联系起来。
public ActionResult Create()
{
return View();
}
这是我麻烦的创建post方法。当我点击提交时没有任何反应。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,AspNetUserId,Date,Request")] Ticket ticket)
{
if (ModelState.IsValid)
{
ticket.AspNetUserId = User.Identity.GetUserId();
db.Tickets.Add(ticket);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(ticket);
}
在我的视图中,我有一个@ Html.HiddenFor(model => model.Id)作为Id,但由于它没有发布,我认为我的ModelState无效。
太令人沮丧了。