asp.net-mvcasp.net-mvc-3razoreditortemplatesmodelmetadata

ModelMetadata for complex type in editortemplate in asp.net mvc


I have a viewmodel that includes a complex property of type TestThing which is declared as:

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

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

I have an EditorTemplate for this type in which I would like to be able to access the meta data for each of the child properties. If the template was for a string for example, I could access the Prompt text by using @ViewData.ModelMetadata.Watermark, but because it is a complex type, I cannot use this method.

Is there an alternative?


Solution

  • You could fetch the metadata for each property like this:

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