Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 411
Paul Hiles Avatar asked Mar 17 '11 09:03

Paul Hiles


2 Answers

You could fetch the metadata for each property like this:

@{
    var metadata = ModelMetadata
        .FromLambdaExpression<TestThing, string>(x => x.Test2, ViewData);
    var watermak = metadata.Watermark;
}
like image 192
Darin Dimitrov Avatar answered Nov 15 '22 18:11

Darin Dimitrov


1) Check this out.

@Html.TextBoxFor
     (m => m.Test1 , 
        new {  
              @placeholder =  
              @ModelMetadata.FromLambdaExpression 
                  (m=>m.Test1 ,ViewData).Watermark.ToString()
            }
     )
like image 2
Dharnishr Avatar answered Nov 15 '22 16:11

Dharnishr