0

我有一个具有一些复杂属性的模型:

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。

有人知道解决方案吗?谢谢!!!!!

4

1 回答 1

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

希望能帮助到你。

于 2012-09-07T15:27:37.230 回答