Dlaczego domyślnie zostały one zmienione podczas dodawania nowego widoku „edycji”? Jakie są zalety korzystania z EditorFor()
vs. TextboxFor()
?
znalazłem to
Domyślnie rusztowania tworzenia i edycji używają teraz pomocnika Html.EditorFor zamiast pomocnika Html.TextBoxFor. Poprawia to obsługę metadanych w modelu w postaci atrybutów adnotacji danych, gdy okno dialogowe Dodaj widok generuje widok.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
źródło
źródło
Odpowiedzi:
Zaletą
EditorFor
jest to, że Twój kod nie jest powiązany z plikiem<input type="text"
. Więc jeśli zdecydujesz się coś zmienić w aspekcie renderowania twoich pól tekstowych, jak zawijanie ich w a,div
możesz po prostu napisać niestandardowy szablon edytora (~/Views/Shared/EditorTemplates/string.cshtml
), a wszystkie pola tekstowe w aplikacji automatycznie skorzystają z tej zmiany, podczas gdy jeśli zakodowałeśHtml.TextBoxFor
cię na stałe będzie musiał go wszędzie modyfikować. Możesz również użyć adnotacji danych, aby kontrolować sposób renderowania.źródło
TextBoxFor : będzie renderować się jak element html do wprowadzania tekstu odpowiadający określonemu wyrażeniu. Mówiąc prościej, zawsze będzie renderować się jak wejściowe pole tekstowe, niezależnie od typu danych właściwości, które są wiązane z kontrolką.
EditorFor : Ta kontrolka jest nieco inteligentna. Renderuje znaczniki HTML na podstawie typu danych właściwości. Załóżmy na przykład, że w modelu istnieje własność boolowska. Aby wyświetlić tę właściwość w widoku jako pole wyboru, możemy użyć CheckBoxFor lub EditorFor. Oba będą generować te same znaczniki.
Jaka jest zaleta korzystania z EditorFor?
Jak wiemy, w zależności od typu danych właściwości generuje znaczniki html. Załóżmy więc, że jutro, jeśli zmienimy typ danych właściwości w modelu, nie ma potrzeby niczego zmieniać w widoku. EditorFor control automatycznie zmieni znaczniki HTML.
źródło
Html.TextboxFor
Zawsze tworzy pole tekstowe (<input type="text" ...
).Podczas gdy EditorFor sprawdza typ i metainformacje i może renderować inną kontrolkę lub dostarczony szablon.
Na przykład dla właściwości DateTime można utworzyć szablon, który używa jQuery DatePicker.
źródło
implement jquery datepicker
i jak z niego korzystać,EditorFor
jest tutajJest to jedna z podstawowych różnic, o których nie wspomniano w poprzednich komentarzach:
Readonly
właściwość będzie działać z polem tekstowym i nie będzie działać zEditorFor
.Powyższy kod działa, gdzie podobnie jak w przypadku podążania nie można ustawić sterowania tylko do odczytu .
źródło
Istnieje również niewielka różnica w danych wyjściowych html dla typu danych typu string.
źródło