2012-06-13 5 views
0
@model IEnumerable<FacetValue> 
<ul> 
    @foreach (var association in Model) 
    { 
     <li> 

      **@Html.CheckBox("association",association.IsSelected) @Html.Label("association", association.Text)** 

      @if (association.IsSelected == true) 
      { 
       <input type="checkbox" id="association" class="left" value="@association.Text" checked="checked"/> 
      } 
      else 
      { 
       <input type="checkbox" id="association" class="left" value="@association.Text"/> 
      } 
      <label>@association.Text</label> 
     </li> 
    } 
</ul> 

@if와 @htmlCheckBox로 시작하는 코드를 사용하고 있습니다. 1. 레이아웃이 엉망입니다. 2. 디스플레이가 엉망이되어 한 곳에서는 확인란을 표시하고 다른 곳에서는 텍스트를 표시합니다. 3. 모든 확인란에 대해 숨김 값이 생성됩니다.면도날 MVC3에 확인란을 그리는 방법

이제는 @if else 로직없이 원하는 내용을 어떻게 표시 할 수 있습니까?

+0

당신이 대답이나 설명을 선택할 것 여기보고 아주 좋은 게시물입니다 그들? –

답변

2

복잡한 개체를 바인딩하려면 정확한 포스트 백을 보장하기 위해 각 항목의 인덱스를 제공해야합니다. 그렇기 때문에 IEnumerable <>을 IList <>으로 변경해야합니다 (또는 다른 변수를 만들어 Model.ToList()로 채울 수있는 이유입니다). foreach()를 for()로 변경해야하므로 Html.CheckBoxFor는 올바른 다시 게시를 보장하는 ID와 NAME을 올바르게 만들 수 있습니다.

@model IList<FacetValue> 
<ul> 
    @for (int i = 0; i < Model.Count(); i++) 
    { 
     <li> 
      @Html.LabelFor(model => model.Model[i].IsSelected, Model[i].Text) 
      @Html.CheckBoxFor(model => model.Model[i].IsSelected) 
     </li> 
    } 
</ul> 
+0

이 코드를 테스트 했습니까? –

+0

해결했습니다. 지금 시도해보십시오. –

+0

IEnumerable을 IList로 변경할 수 있습니까? –

0

는 속성 추가 가시와 체크 상자의 확장 방법을 사용자 정의 할 수 있으며, 체크 박스의 작성에서, 당신은 바퀴를 재발견 할 필요가 없습니다 볼 수

+0

예를 들어 도움이 될 것입니다. –