用于货币格式的ASP.NET MVC数据注释

时间:2015-04-30 18:29:46

标签: asp.net-mvc

我跟随POCO,其成本为浮动。

public class CostChart
{
    public string itemType { get; set; }
    public float? Cost{ get; set; }

}

我需要以货币格式退回费用,例如

  

$ U 4.882,50。

我应该使用哪种数据注释?

这就是我在视图中显示的方式。

<td>@Model.Cost</td>

6 个答案:

答案 0 :(得分:42)

您是否尝试过使用DataType.Currency

public class CostChart
{
    public string itemType { get; set; }
    [DataType(DataType.Currency)]
    public float? Cost{ get; set; }

}

或者,您可以像这样使用DataFormatString

[DisplayFormat(DataFormatString = "{0:C0}")]`
public float? Cost{ get; set; }

但我更喜欢用EditorFor设置显示格式。这是关于Extending Editor Templates for ASP.NET MVC教程的精彩教程。

这样,您只需在一个地方编写货币的显示逻辑,并且每次要显示货币金额时都不需要添加该提取注释。

<强> - 修改

要使其在EditorFor中有效,您还可以将ApplyFormatInEditMode = true添加到DataFormatString的末尾,使该行成为:

[DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]

答案 1 :(得分:4)

试试这个:

public class CostChart
  {
    public string itemType { get; set; }

    [DataType(DataType.Currency)]
    public float? Cost{ get; set; }
  }

如果你仍然没有在web.config下看到$符号 写下这行代码

<globalization culture ="en-us"/>

答案 2 :(得分:0)

请查看本文(Codeculous.)来验证和显示相应货币符号的另一种方法,而无需设置全球化,而只需添加数据注释DataType(DataType.Currency)

答案 3 :(得分:0)

您可以在RazorView中进行

@string.Format("{0:0,0.00,00}", Model.Cost)

答案 4 :(得分:0)

好吧,当我们谈论数据注释时,需要考虑两件事:

数据注解,即:

[DisplayFormat(DataFormatString = "{0:C0}")]
public decimal? Cost{ get; set; }

以及 Razor 页面中的标签,即:

@Html.DisplayFor(model => model.Cost)

如果不使用“DisplayFor”,数据注解就没用了。

另外一个细节,如果你想要小数位,你应该把“C”后面的最后一个“0”去掉,如下:

[DisplayFormat(DataFormatString = "{0:C}")]

希望对你有帮助,祝你好运!

答案 5 :(得分:0)

如果你想显示 4 位小数点(C 后面的数字表示点数),试试这样的方法

  • 这适用于 float/decimal 和 double 类型:

    [显示(名称=“价格”)] [DisplayFormat(DataFormatString = "{0:C4}")] 公开双价{得到;放; }