Почему бы не использовать 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.