ASP.Net MVC4 ViewModel null属性和HttpPost

时间:2013-05-19 01:37:16

标签: asp.net-mvc asp.net-mvc-4

我有以下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吗?

1 个答案:

答案 0 :(得分:0)

请记住,表单只回发HTML输入字段。因此,如果您没有制作任何文本框或隐藏框,则不会发布到您的“编辑”操作。

处理此问题的正确方法是将ID作为隐藏字段传递,然后从数据库/存储库中提取原始值。

然后将Title和AnotherClassItems的新值应用于模型并保存到存储库/数据库。