문제

이 질문은 "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) %>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top