теперь мы можем вызвать другой шаблон с той же моделью
аюсь отобразить модель представления, используя шаблон редактора, который оборачивает модель в наборе полей перед применением базового шаблона редактора объектов.
Мой вид:
@model Mvc3VanillaApplication.Models.ContactModel
@using (Html.BeginForm())
{
@Html.EditorForModel("Fieldset")
}
Использует шаблон набора полей (Views / Shared / EditorTemplates / Fieldset.cshtml):
<fieldset>
<legend>@ViewData.ModelMetadata.DisplayName</legend>
@Html.EditorForModel()
</fieldset>
Который, в свою очередь, использует базовый шаблон для всех объектов (Views / Shared / EditorTemplates / Object.cshtml):
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(x =>
x.ShowForEdit && !x.IsComplexType && !ViewData.TemplateInfo.Visited(x)))
{
@Html.Label(prop.PropertyName, prop.DisplayName)
@Html.Editor(prop.PropertyName)
}
Это мое намерение в любом случае. Проблема в том, что хотя страница отображается с набором полей и легендой, шаблон объекта не применяется, поэтому элементы управления вводом не отображаются.
Если я изменю представление, чтобы не указывать шаблон «Fieldset», тогда свойства моей модели будут отображаться с использованием шаблона объекта, поэтому мой шаблон объекта не будет найден.
Можно ли пропустить одну и ту же модель через несколько шаблонов?
Для чего это стоит, модель представления выглядит так:
namespace Mvc3VanillaApplication.Models
{
[System.ComponentModel.DisplayName("Contact Info")]
public class ContactModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}