我正在尝试创建一个自定义 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 中以不同的方式获取格式化值,但我特别想知道是否可以在运行时动态调整模型元数据。