在 HtmlHelper 中,我试图通过使用检索属性的 DisplayAttribute.GroupName
ModelMetadata.FromLambdaExpression(expression, html.ViewData)
但是,ModelMetadata 中缺少属性“GroupName”。
我搜索了解决方案,我看到的都是相当复杂的操作,而我希望这可以更容易解决。
任何建议表示赞赏!
在 HtmlHelper 中,我试图通过使用检索属性的 DisplayAttribute.GroupName
ModelMetadata.FromLambdaExpression(expression, html.ViewData)
但是,ModelMetadata 中缺少属性“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")