2010-11-21 35 views
2

EditorFor yönteminin aynı zamanda EditorForModel yöntemi gibi bir özellik için etiket ve doğrulamayı oluşturması mümkün mü?asp.net mvc editörü

Şimdi Bir özellik için EditorFor yöntemini kullandığımda (örneğin bir dize), yalnızca metin kutusunu oluşturur.

DÜZENLEME

Arnis Ben denedim ve orada bazı sorunlar:

uzatma yöntemi jenerik HtmlHelper sınıfına bağlı olması. Ayrıca, yardımcı dizeden dönen dize, kodlanmış html'ye neden oluyordu.

yüzden kodunuzu

public static MvcHtmlString EditorWithLabel<T>(this HtmlHelper<T> h,Expression<Func<T, object>> p) 
{ 
     return new MvcHtmlString(string.Format("{0}: {1}", h.LabelFor(p), h.EditorFor(p))); 
} 

modifiye Ama asıl sorun bu sadece propert dize türünde ise çalışır olduğunu.

Özellik Ondalık, Int, DateTime olduğunda, bir boşluk atılır.

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

+0

Sorunun başka bir yerde olduğundan eminim. Aynı yaklaşımları, ints, decimals, datetimes ve custom türleri için de kullanarak. –

+0

ASP.NET MVC 3 RC (Razor) kullanıyorum sorun olabilir mi? – user137348

cevap

1

Ben (kod test edilmedi) özel html yardımcı yaratacak:

public string EditorWithLabel<T>(this HtmlHelper h, 
    Expression<Func<T, object>> p){ 

    return string.Format("{0}: {1}",h.LabelFor(p),h.EditorFor(p)); 
} 

Bu da templates ile elde edilebilir, ama özel bir yardımcı daha iyi uyuyor düşünüyorum.

+0

Lütfen gönderimi gör, ben düzenledim. – user137348