2012-07-20 5 views
4

MVC4 프로젝트에서 제품보기 모델 모음이있는 카테고리보기 모델이 있습니다.편집기 템플릿으로 새 필드를 동적으로 추가하십시오.

카테고리보기 모델 : 컬렉션의 각 제품을 렌더링

@model CategoryViewModel 
@using MVC4PartialViews.Models.ViewModels 

<div class="editor-field"> 
    @Html.EditorFor(model => model.CategoryName) 
    @Html.ValidationMessageFor(model => model.CategoryName) 
</div> 

@Html.EditorFor(x => x.Products) 

편집기 템플릿 : 나는 하나의 제품보기 모델을 렌더링하고, 여기에 제품보기 모델의 컬렉션을 통과하는 편집기 템플릿을 사용

모든 제품이 상위 카테고리보기 모델의 한 부분으로 다시 게시 얻을 수 있도록이 올바르게 자동적으로 이름과 인덱스 요소를 아주 잘 작동
<div class="editor-field"> 
    @Html.EditorFor(model => model.ProductName) 
    @Html.ValidationMessageFor(model => model.ProductName) 
</div> 
// etc. 

- 여기가 출력 내용은 다음과 같습니다

<div class="editor-field"> 
    <input class="text-box single-line" id="Products_0__ProductName" name="Products[0].ProductName" type="text" value="Add 1st product for this Category" /> 
    <span class="field-validation-valid" data-valmsg-for="Products[0].ProductName" data-valmsg-replace="true"></span> 
</div> 

사용자가 제품을 추가 및 제거 할 수있게해야합니다. 새 제품을 추가하려면 필자는 새로운 제품을 만들기 위해 동적으로 편집기 템플릿을 렌더링하고 각 제품에 대해 색인을 생성하거나 이름을 올바르게 지정해야합니다. 즉, 이미 2 개의 제품 (색인 된 0 및 1)이있는 경우 새 제품의 이름을 지정해야합니다 그런는 :

Products[2].ProductName 

스티브 샌더슨에 의해이 기사를 읽은하지만 어설픈 보인다 GUID가 아닌 연속 인덱스 필드 그는 인덱스 자신 필드 :

Editing a variable length list in MVC2

TIA

+0

찾고 계신 것이 있습니까? 나는 같은 의견을 가지고 같은 질문을한다. 그렇게했다면 어떻게 공유 할 수 있습니까? 감사합니다. –

+0

@ 표시 이름이 게시물 이후 다른 것으로 옮겼지만 다시 돌아 왔습니다. 위의 Steve Sanderson 링크 코드 샘플을 다운로드했지만 GUID를 인덱스로 사용합니다. 다시 시도해보고 연속 코드를 사용하여 작업하도록 코드를 얻을 수 있습니까? –

+0

@DisplayName Steve Sanderson이 내가 필요한 것을 수행하지만 Knockout.js를 사용하는 또 다른 기사를 발견했습니다. 내 프로젝트에 자신의 코드를 통합하려했지만 내 컨트롤러에 대한 포스트 백이 작동하지 않습니다. 다시 데이터를 보내지 않습니다. 이렇게 이것을위한 해결책을 아직도 찾는 : - | 기사는 다음과 같습니다. http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/ –

답변

0

여기에 답변하지 않으려면

나는 당신에게 나에게 도움이되는 링크를 찾고 있습니다. 이제 IEnumerable 모델의 속성을 추가/제거하여 EditorFor에 업로드 파일 입력을 동적으로 추가하는 방법을 알았습니다.

귀하의 솔루션으로, 나는 UIHint and template이 원하는대로 할 수 있다고 생각합니다. 템플릿 안에 foreach을 입력하고 id의 형식을 지정하십시오.

관련 문제