Краткий ответ:
Используйте взамен Html.Partial
.
Итак, в вашем файле Template1.cshtml:
@model foo
// insert code here to edit the default fields.
// display extra fields via another editor template.
@Html.Partial("EditorTemplates/Template2", Model)
Длинный ответ:
К сожалению, это похоже на дизайн.MVC отслеживает модели, которые были отрисованы, и если ваша модель уже была отрисована шаблоном, она не будет делать это дважды, даже если шаблон отличается.Следовательно, почему второй @Html.EditorForModel("Template2")
просто ничего не делает.
В частности, он отслеживается в ViewData.TemplateInfo.VisitedObjects
, который является внутренним полем, поэтому у вас нет надежды изменить его после факта.Цель этого поля - предотвратить бесконечную рекурсию.Благородно, но раздражает то, что в нем не учитывается используемый шаблон.
Я выяснил это, посмотрев исходный код , который отлично подходит для поиска этих странных особенностей MVC.