2013-06-11 2 views
2

EditorFor에 문제가 있습니다. 나는가변 길이 목록 편집 ASP.NET MVC 3

public class AddNewItemViewModel : BaseViewModel 
{ 
    ... 

    public List<ItemDetailViewModel> ItemDetails { get; set; } 

    public ItemDetailViewModel ItemDetailTemplate { get; set; } 
} 

public class ItemDetailViewModel 
{ 
    //Item details 
    [Required(ErrorMessageResourceName = "BarCodeValidator", ErrorMessageResourceType = typeof(AddNewItem))] 
    [StringLength(50, ErrorMessageResourceName = "BarCodeLenghtValidator", ErrorMessageResourceType = typeof(AddNewItem))] 
    public string BarCode { get; set; } 
    ... 
} 

항목의 세부 사항을 잘 내 문제를 작업하는 EditorFor에 매핑 내가 jquery하여보기에 새 ItemDetails을 추가 할 수 있습니다 다음과 같은 모델을 가지고있다. 그래서 나는 내가 가진 그 새로운 아이템을 얻을 수 있습니다 여기에 내가 List<ItemDetailViewModel> ItemDetails에 새로 추가 된 HTML을 매핑 할 수있는이

$("#addNewItemDetail").click(function() { 
    $('#distanceSuggestionTemplate').tmpl({ Index: 1 }).appendTo('#itemTemplate'); 
}); 

문제를 실행

<script id="distanceSuggestionTemplate" type="text/x-jquery-tmpl"> 
@Html.EditorFor(m => Model.ItemDetailTemplate) 
</script> 

Jquery Template 그리고 jQuery 코드를 사용되는 기존의 컨트롤러에 게시 할 때. 그 문제를 해결하는 방법에 대한 제안?

답변

0

당신이 EditorFor을 적용 할 경우이 같은 생성 나열하려면 다음 @Html.EditorFor(m => Model.ItemDetailTemplate)이 될 가능성이 높습니다 사용

<input id="ItemDetails_0__Barcode" name="ItemDetails[0].Barcode"/> 
<input id="ItemDetails_1__Barcode" name="ItemDetails[1].Barcode"/> 
... 

그러나 템플릿 :

그래서
<input id="Barcode" name="Barcode"/> 

가에 매핑 할 수없는 당신의 명부.

가능한 해결 방법은 적절한 목록 색인이있는 템플릿을 사용하는 것입니다.

`<input id="ItemDetails_n__Barcode" name="ItemDetails[n].Barcode"/>` 

그러나 우아한 해결책은 아닙니다. 어쩌면 항목을 추가하는 방법을 다시 고려해야 할 것입니다 (예 : ASP.NET MVC 편집기 대신 jQuery 및 ajax 사용)