我需要将4位十进制四舍五入到2位数并在MVC 3 UI中显示
像这样的58.8964到58.90
试过这个How should I use EditorFor() in MVC for a currency/money type?但不行。
As i am using TextBoxFor=> i removed ApplyFormatInEditMode here. Even
i tried with ApplyFormatInEditMode,but nothing works. Still showing
me 58.8964.
MyModelClass
[displayFormat(DataFormatString = "{0:F2}")] public decimal? TotalAmount { get; set; } @Html.TextBoxFor(m=>m.TotalAmount)
我怎样才能完成这一轮?
我不能在这里使用EditorFor(m => m.TotalAmount),因为我需要传递一些htmlAttributes
编辑:
用MVC源代码调试后,他们在内部使用
string valueParameter = Convert.ToString(value,CultureInfo.CurrentCulture);
在InputExtension.cs的MvcHtmlString InputHelper()方法中,它将对象值作为参数并进行转换。他们没有使用任何显示格式。我们怎么解决?
我设法以这种方式修复。由于我有自定义助手,我可以使用以下代码进行管理
if (!string.IsNullOrEmpty(modelMetaData.displayFormatString)) { string formatString = modelMetaData.displayFormatString; string formattedValue = String.Format(CultureInfo.CurrentCulture,formatString,modelMetaData.Model); string name = ExpressionHelper.GetExpressionText(expression); string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); return htmlHelper.TextBox(fullName,formattedValue,htmlAttributes); } else { return htmlHelper.TextBoxFor(expression,htmlAttributes); }
解决方法
如果要将自定义格式考虑在内,则应使用Html.EditorFor而不是Html.TextBoxFor:
@Html.EditorFor(m => m.TotalAmount)
还要确保已将ApplyFormatInEditMode设置为true:
[displayFormat(DataFormatString = "{0:F2}",ApplyFormatInEditMode = true)] public decimal? TotalAmount { get; set; }
displayFormat属性仅用于模板化帮助程序,如EditorFor和displayFor。这是推荐的方法,而不是使用TextBoxFor。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。