我正在尝试使用 CodeFirst 和实体框架在 MSMVC 中使用 DataBinding。我正在尝试将带有外键的模型传递给视图,编辑数据并将结果绑定回控制器操作中,然后再执行更新。
简单地说,我如何让 Entity 在控制器上填充外键对象的值。
该模型非常简单,只包含一个字符串“Text”和外键 UserModel“User”。BaseModel 仅包含一个 Id 和一个 DateTime。
public class CommentModel : BaseModel
{
[Required]
[Display(Name = "Text")]
public string Text { get; set; }
public virtual UserModel User { get; set; }
}
在我的 Razor 视图中,我有一个 User.Id 的隐藏字段:
@Html.HiddenFor(model => model.User.Id)
在我的控制器动作中,我有:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(CommentModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
_commentsRepository.Update(model);
return RedirectToAction("Index");
}
问题是 ModelState 包含错误,因为仅填充了 UserModel 的 Id 属性?
谁能告诉我我做错了什么?