2013-10-29 17 views
30

Neden <label> yerine LabelFor kullanmalıyım? Örn.,Neden MVC'de LabelFor kullanmalıyım?

örn.

@Html.LabelFor(model => model.FirstName) 
@Html.DisplayFor(model => model.FirstName) 

<label for="FirstName">First Name</label> 
@Html.DisplayFor(model => model.FirstName) 

karşı daha yukarıda, p.s.w.g @ Bu sorunun KURU yönü covered. Yerelleştirmeye yardımcı olup olmadığını da bilmek isterim. yani. Mevcut dil ayarına göre farklı etiketler. Böyle DisplayNameAttribute ile modellerini dekore ettik eğer

cevap

40

Eh,:

[DisplayName("First Name")] 
string FirstName { get; set; } 

Sonra sadece etiketin metni tek bir yerde ne olacağını belirtin. Benzer bir etiketi yer sayısında oluşturmak zorunda kalabilirsiniz ve etiketin metnini değiştirmeniz gerektiğinde, sadece bir kez yapmanız uygun olur.

Eğer DisplayAttribute ile yapabileceğiniz farklı dillere yönelik uygulama yerelleştirmek istiyorsanız bu daha da önemlidir:

[Display(Name = "FirstNameLabel", ResourceType = typeof(MyResources))] 
string FirstName { get; set; } 

Ayrıca daha kesinlikle yazılan görüşlere sahip olacağı anlamına gelir. Çok fazla yazmanız gerekiyorsa, "FirstName" gibi bir dizgeyi parmakla doldurmak kolaydır, ancak yardımcı yöntem kullanılarak derleyicinin çoğu zaman bu tür hataları yakalamasına izin verilir.

+1

Görünüm - ViewModel ilişkisi bire bir yapılmamalıdır? Bu durumda, View veya ViewModel içinde olup olmadığını bir çok kez yazmanız gerekecektir. – Jamie

+3

@Jamie Genellikle bu şekilde çalışmıyor. Bir şey için, muhtemelen verileri düzenlemek ve görüntülemek için farklı görünümlere sahip olacaksınız. Ayrıca, muhtemelen uygulamanızın diğer yerlerinde bir 'LabelFor' veya 'DisplayNameFor' çıkışı atmanız gerekecektir. –

+0

DisplayNameFor'u LabelFor üzerinden kullanmanın avantajı nedir? – Jamie

4

LabelFor denetimden endişe etmeden görünüm modelinizden her şeyi kontrol etmenizi sağlar.

Aynı görünüm modelini 2 yerde kullandığınızı varsayalım, bu, tüm denetimleri güncelleştirmek için adı tek bir yerde değiştirebileceğiniz anlamına gelir.

, kullanamaz, ancak kullanımları vardır.

İlgili konular