Использование HTML.EditFor для модели представления внутри родительской модели представления - PullRequest
1 голос
/ 28 февраля 2011

Я новичок в MVC3 и бритве, так что это может быть очевидным, но ни одно из googlefu не нашло для меня ответа.

У меня есть ViewModel, называемая user, внутри пользователя у меня 2-ая viewmodel, называемая address.

Адрес используется повсеместно, поэтому у меня запланировано следующее \

ViewModels:

  1. Пользователь -> {Fname, lname, Address}
  2. Бизнес -> {название компании, адрес}
  3. Дом -> {Номер, Адрес}
  4. Адрес -> {addyline1, addyline2, город, штат, почтовый индекс}

Ala ... user.address.addyline1, business.address.addyline1

У всех них будет Адрес внутри них.

@Html.EditorFor(model => model.address)

Работает нормально, но не использует шаблон, который я создал в

views-> разделяемой> editortemplate-> address.cshtml

@Html.EditorFor(model => model.address, "Address")

вообще не работает.

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Я согласен с @jbtule.просто удалите расширение файла из имени частичного представления, и у вас все будет в порядке.

Еще одна вещь, которую вы можете сделать, чтобы контролировать, как ваши Address объекты будут отображаться без необходимости указывать шаблон частичного представления каждый раз, это создаватьназывается EditorTemplate.Вот как это делается:

Создайте папку с именем EditorTemplates в папке Views->Shared в вашем решении ASP.NET MVC.В этой папке создайте строго типизированное представление, имя которого совпадает с именем типа, для которого вы хотите редактор (в вашем случае он должен называться Address.cshtml), и вы также можете установить шаблон scaffolding на Edit, чтобы иметьготовый редактор, созданный для вас.и все готово!осталось только добавить

вот пример о том, как это сделать (обратите внимание, что он использует ASP.NET MVC2 и, конечно, механизм просмотра ASPX, однако идея заключается в том,то же самое).

Надеюсь, это поможет;)

1 голос
/ 01 марта 2011

Имя папки для размещения вашего Address.cshtml:

EditorTemplates

, а не EditorTemplate (один маленький s может иметь большое значение).

1 голос
/ 28 февраля 2011

Что ж, вы обычно не используете вставленную часть "cshtml", когда вы помещаете имя шаблона, вероятно, "_AddressPartial" будет работать для вас, но я думаю, что вы хотите просто пропустить этот аргумент и поместить свой шаблон пользовательской бритвы в"~ / Views / Shared / EditorTemplates / address.cshtml"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...