ASP.NET MVC子表单数据未发布

时间:2011-05-12 14:39:50

标签: asp.net-mvc-3

这看起来很简单,但我遗漏了一些东西:

型号:

public class MainModel
{

   public SubModel oSubmodel = new Submodel();

....

}

查看:

@model myApp.Models.MainModel
@using (Html.BeginForm("Index","Account", FormMethod.Post, new { id = "form"}) 
{

     @Html.LabelFor(m => m.oSubmodel.prop1

     @Html.TextBoxFor(m => m.oSubmodel.prop1

}

控制器:

 [HttpPost]
 public ActionResult Index(MainModel oModel)
 {
      ....
      string prop = oModel.prop <-----------ok
      string prop1 = oModel.oSubmodel.prop1   <----------null
  }

m.oSubmodel.prop1数据在视图中正确显示。当数据回发到控制器时,MainModel值正确传递,但是 - 所有子模型值都为空。

有人提供任何见解吗?

1 个答案:

答案 0 :(得分:3)

没错。我的错。 subModel需要作为属性从主模型公开,以便绑定在post:

上正常工作

所以

public class MainModel
{

   public SubModel oSubmodel = new Submodel();

....

}

变为:

public class MainModel
{

   public SubModel oSubmodel { get; set; }

....

}

绑定然后效果很好。感谢那些回复的人。