我想在應用基礎對象編輯器模板之前使用將模型包裝到字段集中的編輯器模板來顯示視圖模型。一個模型可以通過多個編輯器模板傳遞嗎?
我的觀點:
@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