Почему бы не использовать Html.EditorForModel () - PullRequest
27 голосов
/ 30 июня 2011

Хорошо, я только что узнал о EditorForModel в MVC, и я хочу знать, когда я должен использовать это вместо EditorFor на каждом из моих свойств? И почему, когда я добавляю строго типизированное представление, он не использует это и строит EditorFor для каждого свойства?

Я опоздал на это ... но спасибо за информацию!

Ответы [ 4 ]

22 голосов
/ 06 мая 2014

Поскольку принятый ответ - только для ссылок (и был удален), я решил ответить на вопрос, полученный из блога Брэда Уилсона : ASP.NET MVC 2Шаблоны, часть 1: Введение .

Выражения модели - это простые помощники, которые работают с текущей моделью.Строка DisplayForModel () эквивалентна DisplayFor (модель => модель).

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)
3 голосов
/ 30 июня 2011

Вы должны использовать его, когда это возможно, но иногда вам потребуется индивидуальная настройка Html.EditorFor использования.

Что касается того, почему встроенные шаблоны не используют его, это в основном потому, что они глупы в целом, а также потому, что, если я помню, им нужно обернуть элементы (например, строки таблицы и т. Д.) Вокруг каждого Html.EditorFor.

0 голосов
/ 20 января 2014

@Html.EditorForModel () ?? И отказаться от удовольствия писать свой собственный взгляд? улыбка

Помимо веселья, делать это как привычку довольно рискованно. Рассмотрим следующий распространенный сценарий - у вас есть переменная bool, скажем, IsMale, в вашей базе данных в таблице клиентов. Ну, очевидно, вам не нужна версия по умолчанию (IsMale с флажком) - вы, вероятно, хотите что-то более дружественное, скажем, теги {select, Options ...., / select}, верно? вот где действительно начинает появляться представление. Это настройка. Каждый взгляд немного отличается. У вас есть двигатель бритвы, используйте его по максимуму! По вашему мнению, вы можете переопределить что угодно, или даже вручную ввести целый кусок HTML-кода самостоятельно.

0 голосов
/ 30 июня 2011

Я никогда не использовал EditorFor и никогда не представлял себе возможность использовать его в будущем. EditorFor предполагает, что знает, чего вы хотите. Вы знаете, что происходит, когда вы что-то предполагаете.

Возможно, если вы делали быстрый всплеск Mvc, чтобы проверить что-то еще, вы можете использовать EditorFor.

...