我正在尝试创建一个自定义HtmlHelper,它显示一个格式化为给定小数位数的数值。我的想法是更改ModelMetadata.DataFormatString属性来实现此目的。是否可以以这种方式为模型属性修改元数据属性?我该怎么做?我的尝试(下面)没有按要求格式化数字。
public static MvcHtmlString FormattedNumberDisplayFor<TModel>(this HtmlHelper<TModel> html, Expression<Func<TModel, decimal?>> expression, byte decimalPlaces)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
string format = string.Format("{{0:f{0}}}", decimalPlaces);
metadata.DisplayFormatString = format;
return html.DisplayFor(expression);
}
我当然可以在同一个HtmlHelper中以不同的方式获取格式化的值,但我特别想知道是否可以在运行时动态调整模型元数据。