Как получить доступ к атрибутам свойств в модели из строго типизированного пользовательского HtmlHelper? - PullRequest
0 голосов
/ 18 марта 2011

У меня есть представление, которое строго типизировано, и его модель имеет тип LogOnModel. Это LogOnModel имеет аннотированные свойства, подобные этому:

[Required(ErrorMessage = "Please enter your password")]
[DataType(DataType.Password)]
[Display(Name = "Password", Description = "Your secreet password")]
public string Password { get; set; }

Все они имеют аннотацию Display с установленным свойством Display.Descripion. Я хочу создать HtmlHelper метод расширения, который будет выводить <span> со значением свойства Display.Description.

Так, например, если я назвал свой метод расширения DescriptionFor, чем этот код:

<%: Html.DescriptionFor(m => m.Password) %>

должен выдать следующий html: <span>Your secreet password</span>

Спасибо за все идеи и код.

1 Ответ

1 голос
/ 18 марта 2011

См. Этот вопрос: Извлечение Отображаемое имя и описание Атрибут из помощника HTML

public static MvcHtmlString DescriptionFor<TModel, TValue>(
    this HtmlHelper<TModel> self, 
    Expression<Func<TModel, TValue>> expression
)
{
    var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
    var description = metadata.Description; // will equal "Your secreet password"
    var name = metadata.DisplayName; // will equal "Password"
    // TODO: do something with the name and the description
    ...
}

MSDN: Модель класса метаданных

...