2011-05-18 4 views
6

MVC'ye yeni geldim, bu yüzden en iyi yaklaşımın burada olacağından emin değildim.ASP.NET MVC 3 - jquery iletişim kutusunda model koleksiyonuna dinamik olarak eklenen öğeleri düzenle

Böyle birkaç koleksiyonlarını içeren bir görünüm modeli vardır:

public class MainViewModel{  
    public List<AViewModel> A { get; set; } 
    public List<BViewModel> B {get; set; } 
    ...} 

Dinamik bir koleksiyona öğe eklemek için Steve Sanderson'ın yaklaşımını here kullanıyorum ve o kadar uzun alt öğeler gibi düzgün şekilde çalışıyorsa Ana görünümde düzenlenebilir.

Yapmakta olduğum sorun, bir açılır pencerede düzenlemek üzere ayrıntıları açacak bir düzenleme bağlantısına sahip salt okunur bir listeyi döndürmektir.

Bu öğeler yeni eklenmiş olabileceğinden, denetleyiciden kısmi bir görünüm vermek için ID özelliğini kullanamıyorum. Şimdi durumda gizli bir div editörleri işlemek gerekecek gibi görünüyor:

<div class="AEditorRow"> 
    @using (Html.BeginCollectionItem("A")) 
    {                 
     @Html.DisplayFor(l => l.ID)     

     @Html.DisplayFor(l => l.Name) 

     @Html.DisplayFor(l => l.Code) 

     <a href="#" onclick="$('#detailsPopup').html($(this).parent().find('.ADetails').html()).dialog()">edit</a> <text>|</text> 
     <a href="#" class="deleteRow">delete</a> 

     <div class="ADetails" style="display: none"> 
@using (Html.BeginForm("EditA", "Controller")) 
      {<fieldset> 
       <legend>Location</legend> 
       @Html.HiddenFor(model => model.ID) 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.Code) 
       </div> 

kimse daha iyi bir yol biliyor mu bu yapmalı?

cevap

5

şimdi çalıştığım bir yürüyüş yoluyla bulabildim bir süre için bu konuda çalışan sonra:

yardımcı olabilir bu kaynakların gibi görünüyor benim için.

http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3

Bu MVC3 için dinamik olarak eklenen iç içe toplama amaçların elde edilmesi için en uygun yöntem olduğu düşüncesindeyiz. Bulduğum diğer önerilerin çoğu MVC2 veya MVC1 içindi ve MVC'nin her yinelemesinin bunu başarmanın en iyi yolunun hafifçe değiştiği görülüyor.

Umarım bu sizin için çalışır.