나는 목적을 설명하는 간단한 모델이 있다고 가정EditorFor IEnumerable을 <T>
public class Category
{
...
public IEnumerable<Product> Products { get; set; }
}
보기 :
@model Category
...
<ul>
@Html.EditorFor(m => m.Products)
</ul>
EditorTemplate : 그렇게하지
@model Product
...
<li>
@Html.EditorFor(m => m.Name)
</li>
주 IEnumerable<Product>
에 대한 EditorTemplate을 정의해야하며,에 대해서만 작성할 수 있습니다.모델 및 MVC 프레임 워크는 IEnumerable에 자체 템플릿을 사용할만큼 똑똑합니다. 그것은 내 컬렉션을 반복하고 내 EditorTemplate를 호출합니다.
출력 HTML 나는 결국 내 컨트롤러에 게시 할 수있는이
...
<li>
<input id="Products_i_Name" name="Products[i].Name" type="text" value="SomeName">
</li>
같은 것입니다.
하지만 왜 EditorTemplate을 템플릿 이름으로 정의 할 때 MVC가 트릭을하지 않습니까? 나는 EditorTemplate
@for (int i = 0; i < Model.Products.Count; i++)
{
@Html.EditorFor(m => m.Products[i], "ProductTemplate")
}
을 IList<Product>
에 속성의 유형을 변경 혼자서 컬렉션을 반복하고 전화를해야하는 경우
@Html.EditorFor(m => m.Products, "ProductTemplate")
는 나에게 가지 더러운 해결 보인다. 이 작업을 수행 할 수있는 다른 방법이 있습니까?
가능한 중복 http://stackoverflow.com/questions/25333332/correct-idiomatic-way-to-use -custom-editor-templates-with-ienumerable-models-in) – GSerg
[이 질문]을 만들기 전에 검색 할 때이 질문을 놓친 것이 확실하지 않습니다. (http://stackoverflow.com/questions/25333332/correct-idiomatic-way- 사용하기 쉬운 커스텀 에디터 템플릿과 ienumerable 모델 인)을 제공합니다. 연대 기적으로 내 질문은이 질문의 사본으로 마감해야하지만 결국 해결 방법이 있기 때문에 다른 방법으로 사용해야한다고 생각합니다. – GSerg
@GSerg, 답변을 공유해 주셔서 감사합니다. 제안 된 해결 방법이 컬렉션을 통한 간단한'for' 루프보다 더 좋다고 말할 수는 없습니다. 미안하지만, 내 질문에 명확하지 않은이 문제에 대한 해결 방법을 찾고있는 것이 아니라 깨끗하고 (나는 희망했다) 이것을 달성하는 유일한 방법. 그렇기 때문에 질문 자체가 매우 유사하더라도 질문에 대한 대답이 내 문제를 해결했다고 말할 수없는 이유입니다. – Zabavsky