我想在应用基础对象编辑器模板之前使用将模型包装到字段集中的编辑器模板来显示视图模型。一个模型可以通过多个编辑器模板传递吗?
我的观点:
@model Mvc3VanillaApplication.Models.ContactModel
@using (Html.BeginForm())
{
@Html.EditorForModel("Fieldset")
}
使用一个字段集模板(查看/共享/ 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”模板,那么我的模型的属性将使用Object模板呈现,所以这不是我的Object模板找不到。
是否可以通过多个模板传递相同的模型?
对于它的价值,视图模型是这样的:
namespace Mvc3VanillaApplication.Models
{
[System.ComponentModel.DisplayName("Contact Info")]
public class ContactModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
那么复杂。你能发布你的视图模型代码吗?所以我们可以更清楚地了解你的问题。据我所知,你试图为所有编辑制作一个通用组件,对吗? – thangchung 2011-06-01 14:54:14
@ThangChung嗯,我重写了对象编辑器模板,因为它很沉重(将所有东西都封装在div中),我想扩展它以适应其他一些惯例。除此之外,我使用fieldset模板,以便每个模型都显示在fieldset中,该fieldset通过javascript成为向导中的页面。 – 2011-06-01 15:07:54