我有以下ViewModel:
public class MyViewModel
{
public int Id { get; set; }
public string Title { get; set; }
public int ParentClassId { get; set; }
public List<AnotherClass> AnotherClassItems { get; set; }
}
在视图中我只有Title的表单输入和不可编辑的AnotherClassItem列表 - 它们仅用于显示与该类相关的项目列表。加载“编辑”视图时会设置所有属性,但是当视图执行帖子时,ParentClassId&amp; AnotherClassItems列表为null。这是来自控制器的HttpPost ActionResult:
[HttpPost]
public ActionResult Edit(FormCollection collection, MyViewModel myviewmodel)
{
if (ModelState.IsValid)
{
//myviewmodel.ParentClassId and myviewmodel.AnotherClassItems are null??
}
return View(myviewmodel);
}
有没有办法传递ParentClassId&amp; AnotherClassItems属性没有在视图中将它们作为表单输入?或者我应该使用Viewbag吗?
答案 0 :(得分:0)
请记住,表单只回发HTML输入字段。因此,如果您没有制作任何文本框或隐藏框,则不会发布到您的“编辑”操作。
处理此问题的正确方法是将ID作为隐藏字段传递,然后从数据库/存储库中提取原始值。
然后将Title和AnotherClassItems的新值应用于模型并保存到存储库/数据库。