asp.net mvc中editortemplate中复杂类型的ModelMetadata

Pau*_*les 5 asp.net-mvc editortemplates modelmetadata razor asp.net-mvc-3

我有一个viewmodel,它包含一个TestThing类型的复杂属性,声明为:

public class TestThing
{
        [Display(Name = "String3", Prompt = "String4")]
        public string Test1 { get; set; }

        [Display(Name = "String5", Prompt = "String6")]
        public string Test2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个这种类型的EditorTemplate,我希望能够访问每个子属性的元数据.例如,如果模板用于字符串,我可以通过使用来访问提示文本@ViewData.ModelMetadata.Watermark,但因为它是复杂类型,所以我不能使用此方法.

还有其他选择吗?

Dar*_*rov 8

您可以像这样获取每个属性的元数据:

@{
    var metadata = ModelMetadata
        .FromLambdaExpression<TestThing, string>(x => x.Test2, ViewData);
    var watermak = metadata.Watermark;
}
Run Code Online (Sandbox Code Playgroud)