Префикс модели при использовании типизированных HTML-помощников

Следующее генерирует входной элемент для поля модели с помощью типизированного помощника:

Html.HiddenFor(m => m.FieldName)

Сгенерированное имя поля FieldName. Как добавить префикс к имени, чтобы он отображался как name="prefix.FieldName"?

Ответ 1

Вы можете установить префикс для HtmlHelper с помощью

htmlHelper.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "foo";

Итак, если вы установите Html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = "Foo" до Html.HiddenFor(m => m.FormId), получившееся имя поля станет "Foo.FormId"

Я бы рекомендовал написать метод расширения для HtmlHelper, а не обрабатывать эту логику в представлении. Затем вы можете использовать имя модели как префикс.

Ответ 2

Вы не можете. Вместо этого вы можете использовать шаблоны редактора. У Брэда Уилсона есть серия сообщений в блогах, описывающих их. Скотт Гу также охватывает их в этой post.