Ответ 1
Есть 6 перегрузок этого помощника:
-
@Html.EditorForModel()
Отображает шаблон
~/Views/Shared/EditorTemplates/TypeName.cshtml
, гдеTypeName
- это точное имя типа вашей модели представления. Если ваша модель представления представляет собой коллекцию (т.е.IEnumerable<TypeName>
,IList<TypeName>
,TypeName[]
,...), ASP.NET MVC автоматически отобразит соответствующий шаблон редактора для каждого элемента коллекции. Вам не нужно писать какие-либо петли в ваших представлениях, чтобы это произошло. Он обрабатывается каркасом для вас. -
@Html.EditorForModel("templatename")
Renders
~/Views/Shared/EditorTemplates/templatename.cshtml
вместо того, чтобы полагаться на соглашение -
@Html.EditorForModel(new { Foo = "bar" })
Отображает шаблон редактора по умолчанию, но передает ему дополнительные данные, которые можно использовать внутри с помощью
ViewData["foo"]
илиViewBag.Foo
-
@Html.EditorForModel("templatename", new { Foo = "bar" })
Renders
~/Views/Shared/EditorTemplates/templatename.cshtml
вместо того, чтобы полагаться на соглашение и передает дополнительные данные представления, которые вы могли бы использовать внутри с помощьюViewData["foo"]
илиViewBag.Foo
-
@Html.EditorForModel("templatename", "fieldprefix")
Renders
~/Views/Shared/EditorTemplates/templatename.cshtml
вместо того, чтобы полагаться на соглашение и изменяет навигационный контекст внутри этого шаблона, что означает, что, например, если у вас был вызов@Html.TextBoxFor(x => x.FooBar)
внутри этого шаблона, вы получитеname="fieldprefix.FooBar"
вместоname="FooBar"
-
@Html.EditorForModel("templatename", "fieldprefix", new { Foo = "bar" })
Renders
~/Views/Shared/EditorTemplates/templatename.cshtml
вместо того, чтобы полагаться на соглашение и изменяет навигационный контекст внутри этого шаблона, что означает, что, например, если у вас был вызов@Html.TextBoxFor(x => x.FooBar)
внутри этого шаблона, вы получитеname="fieldprefix.FooBar"
вместоname="FooBar"
. Он также передает дополнительные данные просмотра, которые можно использовать внутри с помощьюViewData["foo"]
илиViewBag.Foo
Примечание. Система шаблонов будет сначала искать шаблоны в ~/Views/XXX/EditorTemplates
, где XXX - это имя контроллера, который служил этому представлению, и если он не найдет, он будет смотреть в ~/Views/Shared/EditorTemplates
. Это может привести к более тонкой настройке шаблонов. У вас могут быть шаблоны по умолчанию в общей папке, которые могут быть переопределены для каждого контроллера.