ASP.NET MVC의 ienumerable 속성 및 CheckBoxfor의 foreach
-
18-09-2019 - |
문제
이 질문은 "HTML 헬퍼"를 위해 적용되지만 내 특정 문제는 checkboxfor를 사용하는 것입니다 ...
나는 권리가 간단한 poco 인 타입 ienumerable 모델이 있습니다. 이 모델은 실제로 에디토 템플릿을 만든 더 큰 모델의 속성입니다. 내 모델의 더 큰 그림은 다음과 같습니다.
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
Steve Sanderson의 블로그 게시물을 사용하여 답을 찾았습니다. http://blog.stevensanderson.com/2010/01/28/editing-a-variable-list-list-aspnet-mvc-2-style/
"html.begincollectionitem"을 사용하여 내 상황에서 효과가있었습니다.
권리에 대한 editortemplate을 만들었습니다 (내 예에서). 그런 다음 해당 템플릿에 Steve의 BegincollectionItem을 추가했습니다. Steve의 블로그에 제안 된대로 html.renderpartial을 사용하여 템플릿을 불렀습니다.
나는 html.editorfor (m => m.item)를 사용하고 싶었지만 아이템이 모델이 아닌 foreach에 있기 때문에 작동하지 않습니다. 이 경우 편집기를 사용할 수 있습니까?
다른 팁
나는 이것이 효과가 없기 때문에 당신이 문제가 있다고 생각합니다
<%=Html.CheckBoxFor(access) %>
그리고 이것은 작동하지 않았습니다
<%=Html.CheckBoxFor(access=>access.HasAccess) %>
그러나 이것은 작동해야합니다
<%=Html.CheckBoxFor(x=>access.HasAccess) %>