ASP.Net MVCでのIEnumerableプロパティとCheckBoxFor上のforeach
-
18-09-2019 - |
質問
私はこの質問には、HTMLヘルパー「について」のいずれにも適用されると考えているが、私の特定の問題を使用しているCheckBoxFor ...
私は権利が簡単なPOCOあるタイプのIEnumerableをされたモデルを、持っています。このモデルは、実際に私が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;}
}
私は私のメインビューが使用する「LISTRIGHTS」と呼ばれるeditortemplateを作成しました。例えば:<%= Html.EditorFor(M => m.Rights)%>。
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
私は<のhref = "http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvcでスティーブ・サンダーソンによるブログ記事を使って答えを見つけました-2-スタイル/」REL = "nofollowをnoreferrer"> 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.item)を使用していたが、項目がforeachの中にはないモデルであるため、それは動作しません。 EditorForこの場合に使用されていませんか?
他のヒント
私は、これは動作しませんでしたので、あなたが問題を抱えていたと思います。
<%=Html.CheckBoxFor(access) %>
これは動作しませんでしたどちらか。
<%=Html.CheckBoxFor(access=>access.HasAccess) %>
これは動作するはずです。
<%=Html.CheckBoxFor(x=>access.HasAccess) %>