2013-04-25 4 views
1

В HtmlHelper я пытаюсь получить DisplayAttribute.GroupName из свойства, используяКак получить атрибут Display в формате HTML Helper (GroupName)

ModelMetadata.FromLambdaExpression(expression, html.ViewData) 

Однако свойство «GroupName» отсутствует в ModelMetadata.

Я googled для решений, и все, что я видел, было довольно сложными манипуляциями, в то время как я надеюсь, что это можно решить проще.

Любые предложения приветствуются!

ответ

0

У меня есть пример, который может сработать. Я использую это для создания пользовательского помощника. Надеюсь, что это работает для вас:

public static MvcHtmlString DatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string className) 
{ 
    if (expression == null) 
    { 
      throw new ArgumentNullException("expression"); 
    } 
    var expressionText = ExpressionHelper.GetExpressionText(expression); 
    var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); 
    var me = (expression.Body as MemberExpression); 
    var display = me 
       .Member 
       .GetCustomAttributes(typeof(DisplayAttribute), false) 
       .Cast<DisplayAttribute>() 
       .FirstOrDefault(); 
    string paramDisplayName = display.Name; //this is what you need 
    return new MvcHtmlString(DatePicker(htmlHelper, expressionText, className, htmlHelper.ViewData.Eval(expressionText), validations)); 
} 

И это, как я называю этот метод:

@Html.DatePickerFor(model => model.SelectedMilestone.DeliveryDate, "core2-form-textbox-date") 
Смежные вопросы