ModelMetadata для сложного типа в редакторе шаблонов в asp.net mvc - PullRequest
5 голосов
/ 17 марта 2011

У меня есть 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 ]

8 голосов
/ 17 марта 2011

Вы можете получить метаданные для каждого свойства следующим образом:

@{
    var metadata = ModelMetadata
        .FromLambdaExpression<TestThing, string>(x => x.Test2, ViewData);
    var watermak = metadata.Watermark;
}
2 голосов
/ 26 марта 2012

1) Проверьте это.

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