2012-02-26 16 views
8

EditorFor şablonlarını kullanmak ASP.Net MVC 3'ün gerçekten güzel bir özelliğidir, ancak EditorFor'un kayıt oluşturulmasına izin verilmemesi için kaydedilmemiş bir şablon oluşturması mümkün mü?Yeni kayıtlar için bir boşluk oluşturmak için Html.EditorFor kullanma

Yoksa bunu yapmanın başka bir yolu var mı?

ben şöyle şudur yapmaya çalışıyorum hangi yolları:

birincisi belli ki işler
@Html.EditorFor(model => model) 
    @Html.EditorFor(x => new List<Business.ViewModel.Affiliate.Contact>()) 
    @Html.EditorFor(new List<Business.ViewModel.Affiliate.Contact>()) 
    @Html.EditorFor(new Business.ViewModel.Affiliate.Contact()) 

Ancak (Yapmak ne çalışıyorum göstermek) müteakip olanlar aşağıdaki tüm başarısız hata:

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions. 

söz konusu modelidir:

IEnumerable<Business.ViewModel.Affiliate.Contact> 
+0

Kendi özel şablonunuzu oluşturabilir veya yalnızca boş model için anında bir değişken oluşturabilirsiniz: @ {var emptyModel = new Business.ViewModel.Affiliate.Contact();} @ Html.EditorFor (emptyModel) en temiz, çalışıyor –

cevap

6

Görünümüne geçirilecek görünüm modelini hazırlamak denetleyicinin sorumluluğundadır. Eğer 5 boş kontak sıraları ile görmek görünüm modelini başlatmak için örneğin gerek Yani basitçe denetleyicisi yapabilirsiniz:

@model MyViewModel 
... 
@Html.EditorFor(x => x.Contacts) 
:

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     // Add 5 empty contacts 
     Contacts = Enumerable.Range(1, 5).Select(x => new Contact()).ToList() 
    }; 
    return View(model); 
} 

ve görünümde zamanki gibi EditorFor yardımcısı kullanmak

Bu, Contacts koleksiyonuna eklediğimiz 5 öğenin her biri için ilgili düzenleyici şablonunu oluşturacaktır.

+0

Ben bu cevabı ile gideceğim, sonunda kullandığım çözüm ve aynı zamanda en mantıklı olan bir çözüm - denetleyicinin görünümünde çalışması gereken tam görünüm modeksini hazırlamalıdır . – Moo

+0

NEDEN BENİM EDİTÖR ŞABLONUNIN ARAMA OLMADIĞINI ARIYORUM! SENİN TENDER NULL ÇEKİYOR –

0

soru varsa AJAX içermeyen, o zaman ben şöyle ViewModel tasarlayacaktık:

class MyList 
{ 
    public List<MyRow> Rows {get;set;} 
    public MyRow NewRow {get;set;} 
} 

Sonra kolayca newRow özelliğine bağlı boş editörü ekleyebilir. Ve denetleyicide, sonraki aramalarda NewRow satırlarına eklersiniz.

İlgili konular