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

时间:2011-03-17 09:05:14

标签: asp.net-mvc asp.net-mvc-3 razor editortemplates modelmetadata

我有一个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; }
}

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

有替代方案吗?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

1)检查一下。

@Html.TextBoxFor
     (m => m.Test1 , 
        new {  
              @placeholder =  
              @ModelMetadata.FromLambdaExpression 
                  (m=>m.Test1 ,ViewData).Watermark.ToString()
            }
     )