MVC3의 editorFor 도우미와 관련하여 이상한 문제가 있습니다. 여기에 문제가 있습니다 : 나는 checkboxList를 표시하려고하는데 템플릿 이름을 explicity로 호출하지 않으면 작동합니다. 그러나 템플릿 이름을 사용하려고하면 단순히 내 viewModel을 전달해야 할 때 일반 목록을 전달하려고한다는 예외를 throw합니다. 나는 더 이해할 수 있도록 몇 가지 코드를 보여 드리겠습니다 :asp.net-mvc3 Editor 템플릿 이름 문제
뷰 모델
public class ChkViewModel
{
public string ContractName {get;set;}
public string Contract {get;set;}
public bool Checked {get;set;}
}
EditorFor 템플릿 (이 ContractTemplate라고합니다) 내보기에서
@model Models.ChkViewModel
<p>
@Html.HiddenFor(x => x.Contract)
@Html.LabelFor(x => x.ContractName , Model.ContractName)
@Html.CheckBoxFor(x => x.Checked, new { @class = "chkContract" })
</p>
발췌
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList)
</div>
이 작동합니다. 그러나이 작업을 수행하려고 :
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList, "ContractTemplate")
</div>
그것은 내가 간단한 ChkViewModel 아닌 GenericList ChkViewModel을 통과해야한다는 말하는 InvalidOperationException
가 발생합니다.
나는 다른 체크 박스 목록을 만들려고했기 때문에 나는 이것을 묻는 것 뿐이다. 체크 박스를 표시하지도 않고 만들 수도 없었고, 템플릿 이름을 설정하려고했을 때 나는 적어도 그렇게 할 수 있었다. 확인란을 보면 오류가 발생했습니다.
<div id="contractContainer">
@for (int i = 0; i < item.ContractList.Count; i++) {
@Html.EditorFor(item => item.ContractList[i], "ContractTemplate")
}
</div>
이 ASP.NET MVC는 처음에 당신을 위해 무대 뒤에서 무엇을하는지 유사합니다
왜 템플릿 이름을 지정 하시겠습니까? – epzee
마지막 단락에서 언급했듯이 이전에는 필요하지 않았지만 다른 예제를 만들려고 시도했을 때 작동하지 않았습니다. 게다가 매개 변수라면 왜 사용하지 않을까요? 내가 사용하고있는 템플릿을 구체적으로 아는 것이 더 낫지 않습니까? – AdrianoRR