我应该如何在MVC中使用EditorFor()获取货币/货币类型?

在我看来,我有以下电话。

 x.Cost) %> 

我有一个带有以下代码的ViewModel来定义Cost。

 public decimal Cost { get; set; } 

但是,这会显示十进制值,小数点后有四位数(例如0.0000)。 我知道Decimal.toString("G") ( MSDN )似乎解决了这个问题,但我不确定在哪里应用它。

一个解决方案似乎是创建一个局部视图“Currency.aspx”。

 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>  

我的ViewModel中有一个[UIHint("Currency")]

这似乎不优雅。 我认为这个问题已经在MVC框架或C#中的某个地方得到了解决,但我不知道更清洁的解决方案。

在MVC中处理编辑货币值的适当方法是什么?

 [DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)] public decimal Cost { get; set; } 

在你看来:

 <%= Html.EditorFor(x => x.Cost) %> 

就这样。

您可能希望应用自定义CSS类。 你可以这样做:

 
<%= Html.EditorFor(x => x.Cost) %>

然后在你的CSS中:

 .currency input { /** some CSS rules **/ } 

或编写自定义DataAnnotationsModelMetadataProvider ,它允许您:

 [DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)] [HtmlProperties(CssClass = "currency")] public decimal Cost { get; set; } 

然后在你看来:

 <%= Html.EditorFor(x => x.Cost) %> 

如果您使用EditorFor模板,这是适当的方法。

什么“非常不优雅”是什么意思?