我有一个带有一些复杂属性的模型:
public class TestModel
{
public string Prop1 { get; set; }
public SubClass Prop2 { get; set; }
}
public class SubClass
{
public string Test { get; set; }
}
public class TestModelMetadata : ModelMetadataConfiguration<TestModel>
{
public TestModelMetadata ()
{
Configure(m => m.Prop1).DisplayName("is going to be displayed");
Configure(m => m.Prop2.Test).DisplayName("is NOT going to be displayed");
}
}
当我尝试在视图上显示模型时:
@Html.LabelFor(m => m.Prop1)
@Html.LabelFor(m => m.Prop2.Test)
显示Prop1的正确标签,对于Prop2.Test不显示。
有人知道解决方案吗?感谢!!!!!
答案 0 :(得分:0)
我应该为每种类型创建元数据配置,对于SubClass:
public class SubClassMetadata : ModelMetadataConfiguration<SubClass>
{
public SubClassMetadata()
{
Configure(m => m.Test).DisplayName("is going to be displayed1");
}
}
如果要使用@ Html.DisplayForModel显示具有子类属性的模型,也应该覆盖对象的显示模板,因为默认mvc(3 - 我不知道它是否在v4中更改)显示模板的对象跳过“ComplexType “财产。自定义默认模板的起点可以是https://github.com/ASP-NET-MVC/ASP.NET-Mvc-3/blob/master/mvc3/src/MvcFuturesFiles/DefaultTemplates/DisplayTemplates/Object.ascx
希望它有所帮助。