2008-11-08 6 views
11

Sadece el ile HTML yazmak yerine Html.CheckBox, Html.TextBox, vb yöntemleri kullanmamın belirli bir nedeni var mı?MVC'de HtmlHelper'ı kullanmanın bir yararı var mı?

<%= Html.TextBox("uri") %> 

aşağıdaki HTML

<input type="text" value="" name="uri" id="uri"/> 

O Bundan daha birkaç tuş vuruşları ancak diğer kaydeder tahmin vermektedir. HtmlHelper'ları mümkün olduğunda kullanmamın bir nedeni var mı yoksa sadece bir tercih meselesi mi?

cevap

5

<input value="<%Html.Encode(ViewData.Model.Uri"%>" /> büyük faydalar yapmak gerekir:

Bu aşırı yüklenmiş yöntemler değerleri önceden doldurmak için sadece ViewState gibi bir (biçimlendirilmiş ve HTML için güvenli).

MVC'nin Doğrulama özellikleri için destek oluşturmasına izin verir.

Bu, oluşturmayı değiştirmek için kendi DLL'nizi (bir çeşit "Denetleyici Bağdaştırıcısı" türü metodolojisi) sağlayarak oluşturma işlemini geçersiz kılmanıza olanak tanır. geri gönderme (ler) üzerinden bir metin 's değerinin korunması için oraya ** http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx

+2

Hayır, ViewState ** değildir;:

Kendi "kontrolleri" inşa etme fikrine yol açar Bu, IPostBackDataHandler (System.Web.UI ad alanı, System.Web derlemesi) işidir. –

+0

Terminolojimin iyi düzeltilmesi ... +1 :) –

1

MVC'yi çok uzun zamandır yapmıyordum, ancak Html.ActionLink'e dayalı menü sekmeleri oluşturmak için bazı uzantı yöntemleri zaten yazdım. Kullanımımla tutarlı olmamı sağlıyor ve eğer CSS menülerimin çalışma şeklini değiştirmeye karar verirsek, yeni sekme formatını çıkarmak için sadece tek bir yöntemi değiştirmem gerekiyor.

Onlardan yaptığım diğer kullanım, denetimlere değer sağlamak için ViewData kullanılarak koşullu çıktıdadır.

2

Bir şey tutarlılık içindir ... Ben her zaman için ad özniteliğini unutun. Ayrıca, kendi projeleriniz için işlevleri genişletebilirsiniz. Hiçbir şey için yardımcıları olarak adlandırılmadılar!

2

Bir soyutlama katmanı kullanmanın geleceği, kodunuzu takılabilir bir şekilde geleceğe hazır hale getirmektir. Belki bugün, HTML 4 sayfa oluşturuyorsunuz, ancak yarın XHTML sayfaları veya XAML veya XUL oluşturmak istiyorsunuz. Özellikle de yüzlerce sayfanız varsa, etiketleri her yerde kodlamanız çok fazla değişiklik. Her şey bu kütüphaneyi çağırıyorsa, yapmanız gereken tek şey kütüphaneyi yeniden yazmaktır. Olumsuzluk, genellikle insanlar tarafından biraz daha az okunabilir olduğu düşünülmektedir. Bu nedenle, büyük olasılıkla bakım programcılarınızdaki bilişsel talebi artırır. Bu avantaj ve dezavantajların MVC ile hiçbir ilgisi yoktur.

7

Başka bir yararı, ViewData'nız alanın ismiyle eşleşen bir değer içeriyorsa, bunun doldurulacağıdır.

örn.

ViewData["FirstName"] = "Joe Bloggs"; 

<%=Html.TextBox("FirstName") %> 

verecek

<input type="text" value="Joe Bloggs" id="FirstName" /> 
2

Aslında oto doldurur öncelikle ViewData.Model.uri üzerine ikinci ViewData [ "uri"] tarafından temel alarak metin kutusu. de genişlemiş el vardır