Mur*_*san 25 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我需要将4位十进制四舍五入到2位数,并在MVC 3 UI中显示
像这样的58.8964到58.90
试过这个我应该如何在MVC中使用EditorFor()获取货币/货币类型?但没有工作.
因为我正在使用TextBoxFor =>我在这里删除了ApplyFormatInEditMode.即使我尝试使用ApplyFormatInEditMode,但没有任何作用.仍然显示我58.8964.
MyModelClass
[DisplayFormat(DataFormatString = "{0:F2}")]
public decimal? TotalAmount { get; set; }
@Html.TextBoxFor(m=>m.TotalAmount)
Run Code Online (Sandbox Code Playgroud)
我怎样才能完成这一轮?
我不能在这里使用EditorFor(m => m.TotalAmount),因为我需要传递一些htmlAttributes
编辑:
在使用MVC源代码调试之后,它们在内部使用
string valueParameter = Convert.ToString(value, CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
在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);
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*ppe 48
这适用于MVC5
@Html.TextBoxFor(m => m.TotalAmount, "{0:0.00}")
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 21
如果您想要考虑自定义格式,则应使用Html.EditorFor而不是Html.TextBoxFor:
@Html.EditorFor(m => m.TotalAmount)
Run Code Online (Sandbox Code Playgroud)
还要确保已设置ApplyFormatInEditMode为true:
[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal? TotalAmount { get; set; }
Run Code Online (Sandbox Code Playgroud)
DisplayFormat属性仅用于模板化帮助程序,如EditorFor和DisplayFor.这是推荐的方法,而不是使用TextBoxFor.
| 归档时间: |
|
| 查看次数: |
60204 次 |
| 最近记录: |