在格式字符串上右对齐货币

时间:2014-09-11 14:22:41

标签: c# data-annotations

我的C#代码中有DisplayFormat,如下所示:

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

输出就像:USD 50 但是,如何更改此显示格式以显示:50 USD?右边是货币符号吗?

1 个答案:

答案 0 :(得分:4)

此页面列出了可用于货币的所有自定义字符串格式,还有很多指向msdn上其他格式字符串页面的链接:

http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

具体来说,看起来你想要[DisplayFormat(DataFormatString = "{0:0C}")]?这几乎看起来太简单了,你已经尝试过了吗?

---编辑---

好的,这太简单了。 C0表示“打印号码(小数点0},然后是货币(C)”。但是,在该页面的更下方是货币模式的更具体细节。埋藏在这个链接:

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencypositivepattern(v=vs.110).aspx

  • 0会产生$ n
  • 1导致n $
  • 2会产生$ n
  • 3结果为n $

所以你想要货币模式1或3.现在你需要找到一些方法将它放入DisplayFormat属性,希望有办法做到这一点。如果没有,应该很容易对它进行子类化并覆盖tostring方法以允许传入货币模式(除非它是sealed类或其他东西,在这种情况下,粗略)。