MVC3中的POST视图模型属性为null

时间:2012-05-09 08:02:32

标签: asp.net-mvc-3 c#-4.0

我的观点存在问题在HTTP POST上,视图模型为我的所有属性返回null

以下是我的观点模型。

public class CustomerVM
{
    public List<CustomerCDTO> customerCDTO { get; set; }
}

在上面的视图模型中,我创建了一个List<CustomerCDTO>属性。 CustomerCDTO类定义如下。

public class CustomerCDTO
{
    public string Name { get; set; }
    public bool Active { get; set; }
    public bool? IsChecked { get; set; }
}

以下是我的观点:

<%foreach (var item in Model.customerCDTO) {%>
<tr>
    <td style="text-align: center; width: 10%;" class="table-content-middle">
        <%if (item.Active == true)
        {%>
            <%=Html.CheckBoxFor(m=>item.Active)%>
        <%}
        else
        { %>
            <%=Html.CheckBoxFor(m=>item.Active)%>
        <%}%>
    </td>
    <td class="table-content-middle" align="center" style="width: 80%;">
        <%: item.Name%>
    </td>
</tr>
<%} %> 

当我执行HTTP GET时,一切都按预期工作,但在POST时我得到null CustomerVM.customerCDTO

请建议我该怎么做才能让它发挥作用。

谢谢,

1 个答案:

答案 0 :(得分:4)

这是因为您没有使用包含CustomerCDTO中的信息的表达式来访问每个List

改为使用for循环:

<%for (var i = 0; i < Model.customerCDTO.Count; ++i)

并参考带有

等表达式的元素
<%=Html.CheckBoxFor(m => m.customerCDTO[i].Active)%>

基本上,您需要将表达式m => ...解析为您感兴趣的属性,从m开始,而不是从其他变量开始。