Foreach关类型财产和CheckBoxFor在ASP.Net 视
-
18-09-2019 - |
题
我相信这个问题适用于任何"为"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) %>
不隶属于 StackOverflow