2011-08-02 1 views
2

ViewModel 클래스에 대한 사용자 정의 EditorTemplate이 있습니다 (확인란 목록 생성).IEnumerable 용 MVC3 편집기 템플릿은 @ Html.LabelFor의 'for'특성을 생성하지 않습니다.

보기에서 내 모델은 IEnumerable<ViewModel>이지만, 내가 생성 된 HTML에 @Html.EditorForModel()를 호출 할 때 forlabel 태그의 속성은 비어 있습니다.

하나의 확인란 만 렌더링하려는 경우 모든 것이 올바르게 작동합니다.

public class StateViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool Checked { get; set; } 
} 

EditorTemplate :

@model Mcs.Sibs.UI.Web.Models.StateViewModel 

@Html.HiddenFor(x => x.Id) 
<div> 
    @Html.CheckBoxFor(x => x.Checked) 
    @Html.LabelFor(x => x.Checked, Model.Name) 
</div> 

내보기 :

@model IEnumerable<Mcs.Sibs.UI.Web.Models.StateViewModel> 
@using (Html.BeginForm() 
{  
    @Html.EditorForModel() 
} 

생성 된 HTML은 (하나 개의 체크 박스) 다음과 같습니다

<input type="hidden" value="1" name="[0].Id" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true"> 
<div> 
<input type="checkbox" value="true" name="[0].Checked" data-val-required="The Checked field is required." data-val="true"> 
<input type="hidden" value="false" name="[0].Checked"> 
<label for="">Checkbox label</label> 

당신은 그 '에 대한 볼 수 있습니다 '속성이 비어 있습니다. 내가 잘못했거나 MVC3 기본값 EditorTemplate에 버그가 있습니다. IEnumerable<T>?

+0

음, 이상합니다. 두 번째 매개 변수없이 LabelFor를 호출 해봤습니까? –

+0

@ 존 - 예, 아직 두 번째 매개 변수없이 시도했습니다. –

+0

예 ... 나는 이것에 대한 답을보기 위해 기다릴 수 없습니다. IEnumerable 및 Html.EditorFor (model => Model [i])에 대한 반복을 시도 했습니까? –

답변

1

이 시도 :

@Html.EditorFor(model => model) 
+0

아니요. 아무것도 바뀌지 않습니다. –

0

나도 내가이는 IEnumerable 수집을 포장하기 위해 추가 뷰 모델을 사용하여 해결되지 않은 작업 솔루션을 약 한 시간 후에이 문제를 가지고 있었다. 보기에, 그리고

public class MyViewModel 
{ 
    public List<StateViewModel> StateViewModels { get; set; } 
} 

:

다음 코드를 시도하십시오 속성

@model IEnumerable<Mcs.Sibs.UI.Web.Models.MyViewModel> 
@using (Html.BeginForm() 
{  
    @Html.EditorFor(m => m.StateViewModels) 
} 

ID와 제대로 생성됩니다.
물론 모델의 이름을 명명 규칙에 적용 할 수 있습니다.

관련 문제