我有一个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
访问提示文本,但由于它是复杂类型,我无法使用此方法。
有替代方案吗?
答案 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()
}
)