动态设置Decimal的数字格式

时间:2018-06-05 08:46:12

标签: c# asp.net-mvc razor entity-framework-6

我需要根据其他值更改Decimal数字的格式。

我的客户是演出场所,并希望以不同的格式收取不同消耗品的使用情况,例如:

  

更换灯泡 - 仅限整数=数量只能等于1或2或3 ...
  工时 - 按季度收费 - 数量可能等于1.25(小数点后2位)
  使用的电量 - 收取4小数点=数量等于23.1234

所以我希望能够根据收费项目的类型更改为数量的数字格式:

  

if item = Light Globes,format = 0
  if item = Man hours,format = 0。##
  if item = Electricity,format = G4

由于数字格式的动态特性,使用类似DisplayFormat(DataFormatString = "{0:d}")]的内容是不合适的(除非您知道在运行时更改此方法)。

但是我需要系统以任何选择的格式“思考”,所以如果格式为'0.00',那么我需要所有显示格式,验证,数字舍入等为'0.00'。

我可以将每个项目的相关格式存储在数据库中。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

您无法添加实际属性(它们会被刻录到IL中)。一种可能的解决方法是创建自己的自定义属性,实现所有可能的验证,显示格式等;并在运行时添加该属性(如this)。