我相信这个问题适用于任何"为"Html佣工,但我的特定问题的是使用CheckBoxFor...

我有一个模式类型的类型,那里的权利是一个简单的POCO。这种模式实际上是一个属性的一个更大的模型,我创建了一个EditorTemplate。这里是更大的画面了我的模型:

public class bigmodel
{
     public string Title {get; set;}
     public string Description {get; set;}

     [UIHint("ListRights")]
     public IEnumerable<rights> Rights {get;set;}
}

public class rights
{
    public bool HasAccess {get; set;}
    public string Description {get;set;}
}

我创建了一个editortemplate称为"ListRights",我的主要观点的用途。例如:<%=Html。EditorFor(m=>m。权利)%>.

在ListRights.ascx,我想这样的代码:

<table>
  <% foreach(rights access in Model)
  { %>
      <tr>
        <td>
            <%=Html.CheckBoxFor( access ) %>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

我知道CheckBoxFor线不工作,但我想要做的事情,产生同样的结果,因为如果访问是一个属性模型。

在上述例子中,我希望一切自动绑定在员额。

我试着伪造的框码与此类似,但它并不自动绑定:

<table>
  <% for(int i=0; i < Model.Count(); i++)
  { %>
      <tr>
        <td>
            <%=Html.CheckBox(string.Format("[{0}].HasAccess",i), Model.ElementAt(i).HasAccess)%>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

任何建议?

有帮助吗?

解决方案 2

我找到了答案通过使用一个博客的史蒂夫*桑德森在 http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

使用"Html。BeginCollectionItem"曾在我的情况。

我创建了一个EditorTemplate权利(在我的实例)。然后加入史蒂夫的BeginCollectionItem到这一模板。我被称为模板的使用Html。RenderPartial建议在史蒂夫的博客。

我想用Html。EditorFor(m=>m。项目),但是,这并不工作,因为项目是在ForEach,而不是在模型。可以EditorFor被用在这种情况下?

其他提示

我猜你有问题,因为这没有奏效

<%=Html.CheckBoxFor(access) %>

和这样不起作用或者

<%=Html.CheckBoxFor(access=>access.HasAccess) %>

但这应该工作

<%=Html.CheckBoxFor(x=>access.HasAccess) %>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top