asp.net-mvc – MVC中TextBoxFor的DisplayFormat
|
我需要将4位十进制四舍五入到2位数并在MVC 3 UI中显示 像这样的58.8964到58.90 试过这个How should I use EditorFor() in MVC for a currency/money type?但不行。
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。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – web.config中的元素和项目文件之间有什么不同
- 获取ASP.NET会话上次访问时间(或超时)
- asp.net – CultureInfo.CurrentCulture从中读取文化
- 诊断IIS 7和ASP.NET MVC上的404错误
- asp.net-mvc – 如何使用Html.EditorFor与MVC3设置id
- asp.net core 实现一个简单的仓储的方法
- ASP.NET Web窗体DropDownList具有SelectedValue,因为它不存
- 有条件地排除ASP.NET WebForms中的一个HTML块
- asp.net – 在MVC5应用程序中使用OWIN软件包的好处
- asp.net可用性日历显示全年
