2008-11-08 13 views
11

Czy istnieje konkretny powód, dla którego powinienem używać metod Html.CheckBox, Html.TextBox itd. Zamiast ręcznego pisania kodu HTML?Czy istnieje korzyść z używania HtmlHelper w MVC?

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

świadczy następujący kod HTML

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

To chyba zaoszczędzić kilka kluczowych uderzeń, ale poza tym. Czy istnieje jakiś szczególny powód, dla którego powinienem zrobić wszystko, aby używać HtmlHelpers, kiedy tylko jest to możliwe, czy jest to tylko kwestia preferencji?

Odpowiedz

5

Istnieją ogromne korzyści:

To przeciążone metody wstępnego wypełnienia wartości (sformatowany i bezpieczne dla HTML) podobnie jak ViewState.

Umożliwia wbudowanie obsługi funkcji sprawdzania poprawności w MVC.

Umożliwia przesłonięcie renderingu poprzez udostępnienie własnej biblioteki DLL do zmiany renderowania (rodzaj metodologii "Adapter Adapter").

Prowadzi to do idei tworzenia własnych „kontroli”: http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx

+2

Nie, ViewState jest ** nie ** tam, aby zachować wartość pola tekstowego nad odświeżenie strony (s); to jest zadanie IPostBackDataHandler (przestrzeń nazw System.Web.UI, montaż System.Web). –

+0

Dobra korekta mojej terminologii ... +1 :) –

1

Nie robiłem zbyt długo MVC, ale już napisałem kilka metod rozszerzenia do generowania zakładek menu w oparciu o Html.ActionLink. Pozwala mi to zachować spójność z moim użyciem, a jeśli zdecyduję się zmienić sposób działania moich menu CSS, zmodyfikuj tylko jedną metodę, aby wyprowadzić nowy format tabulatora.

Innym użyciem, które z nich zrobiłem, jest wyjście warunkowe za pomocą ViewData do dostarczania wartości do formantów.

2

Jedna rzecz to konsekwencja ... Zawsze zapominam o atrybucie nazwy. Dodatkowo można rozszerzyć funkcje dla własnych projektów. Nie są nazywane pomocników za nic!

2

Plusem korzystania z warstwy abstrakcji jest w przyszłości sprawdzanie kodu w sposób umożliwiający podłączenie. Może dzisiaj tworzysz strony HTML 4, ale jutro chcesz tworzyć strony XHTML lub XAML lub XUL. To dużo zmian, jeśli po prostu mocno zakodujesz znaczniki wszędzie, zwłaszcza jeśli masz setki stron. Jeśli wszystko wywołuje tę bibliotekę, wszystko, co musisz zrobić, to przepisać bibliotekę. Minusem jest to, że zazwyczaj uważa się, że jest on nieco mniej czytelny dla ludzi. Tak więc najprawdopodobniej zwiększa zapotrzebowanie poznawcze na programistów konserwacji. Te zalety i wady naprawdę nie mają nic wspólnego z MVC.

7

Inną korzyścią jest to, że jeśli Twoje dane ViewData zawierają wartość pasującą do nazwy pola, zostanie wypełnione.

np.

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

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

odda

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

To faktycznie auto wypełnia swoją tekstowe oparte na pierwszym i drugim swoim ViewData.Model.uri przez ViewData [ "uri"]. Robi to ręcznie trzeba by zrobić <input value="<%Html.Encode(ViewData.Model.Uri"%>" />

Powiązane problemy