如何在Html帮助器(GroupName)中检索显示属性

本文关键字:检索 显示 属性 GroupName Html 帮助 | 更新日期: 2023-09-27 18:10:48

在HtmlHelper中,我试图检索DisplayAttribute。组属性的名称,使用

 ModelMetadata.FromLambdaExpression(expression, html.ViewData)

然而,ModelMetadata中缺少属性"GroupName"。

我在谷歌上搜索解决方案,我看到的都是相当复杂的操作,而我希望这个问题能更容易解决。

欢迎任何建议!

如何在Html帮助器(GroupName)中检索显示属性

我有一个可能起作用的例子。我用它来创建一个自定义助手。希望这对你有用:

 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")