Почему бы не использовать Html.EditorForModel()
Хорошо, я только что узнал о EditorForModel
в MVC, и я хочу знать, когда я должен использовать это вместо EditorFor
для каждого из моих свойств? И почему при добавлении строго типизированного представления он не использует это и не строит EditorFor
для каждого свойства?
Я опаздываю на это... но спасибо за информацию!
Ответы
Ответ 1
Поскольку принятый ответ - это ответ только для ссылок (и был удален), я думал, что я действительно отвечу на вопрос, полученный из Брэд Уилсон Блог: Шаблоны ASP.NET MVC 2, часть 1: Введение.
Выражения модели представляют собой простые помощники, которые работают с текущей моделью. Линия DisplayForModel() эквивалентна модели DisplayFor (model = > ).
TL; DR та же идея может быть принята для EditorFor(model => model)
и EditorForModel()
; эти вспомогательные методы достигают того же. EditorForModel()
предполагает, что выражение модели представляет собой @model
, который был передан в представление.
Возьмите следующие модели и посмотрите, например:
public class Person
{
public string Name {get; set;}
public Address MailingAddress {get; set;}
}
public class Address
{
public String Street {get; set;}
public String City {get; set;}
public String State {get; set;}
}
Create.cshtml
:
@model MyNamespace.Models.Person
/* So, you need an Editor for the Person model? */
@Html.EditorForModel()
/*the above is equivalent to @Html.EditorFor(model => model) */
/* you need to specify the Address property that the editor accepts? */
@Html.EditorFor(model => model.MailingAddress)
Ответ 2
Вы должны использовать его, когда это возможно, но иногда вам потребуется настраиваемость отдельных Html.EditorFor
.
Что касается того, почему встроенные шаблоны не используют его, в основном потому, что они глупы в целом, но также потому, что, если я помню, им нужно обернуть элементы (например, строки таблицы и т.д.) вокруг каждого Html.EditorFor
.
Ответ 3
@Html.EditorForModel()?? И отказаться от удовольствия писать собственный взгляд? улыбка
Помимо удовольствия, делать это, как привычка, довольно рискованно. Рассмотрим следующий общий сценарий: у вас есть переменная bool, скажем, IsMale в вашей базе данных в таблице ваших клиентов. Ну, очевидно, вам не нужна версия по умолчанию (IsMale с флажком) - вы, вероятно, хотите что-то более дружелюбное, скажите теги {select, Options....,/select}, правильно? что, когда представление действительно начинает пинаться. Это настройка. Каждый взгляд несколько отличается. У вас есть двигатель RAZOR, используйте его максимум! По вашему мнению, вы можете переопределить что угодно или даже вручную набрать весь фрагмент HTML-кода.
Ответ 4
Я никогда не использовал EditorFor и никогда не думал использовать его в будущем. EditorFor предполагает, что он знает, чего вы хотите. Вы знаете, что происходит, когда вы что-то принимаете.
Возможно, если вы делаете быстрый всплеск Mvc, чтобы проверить что-то еще, вы можете использовать EditorFor.