【发布时间】:2018-06-05 08:46:12
【问题描述】:
我需要根据其他值更改Decimal 数字的格式。
我的客户是一个表演场地,想以不同的格式对不同的消耗品收取使用费,例如:
更换灯泡 - 仅限整数 = 数量只能等于 1 或 2 或 3...
工时 - 按季度计费 - 数量可能等于 1.25(2 个小数点)
用电量 - 小数点后 4 位 = 数量可能等于 23.1234
所以我希望能够根据收费项目的类型更改为数量的数字格式:
如果项目 = 光球,格式 = 0
如果项目 = 工时,格式 = 0.##
如果项目 = 电力,格式 = G4
由于数字格式的动态特性,使用 DisplayFormat(DataFormatString = "{0:d}")] 之类的内容是不合适的(除非您知道在运行时更改它的方法)。
但是我需要系统以选择的任何格式“思考”,所以如果格式为“0.00”,那么我需要所有显示格式、验证、数字舍入等为“0.00”。
我可以将每个项目的相关格式存储在数据库中。
非常感谢。
【问题讨论】:
-
"G4" 是一个字符串,因此永远不能以任何格式保存为十进制。因此,您必须使用字符串作为属性的类型。之后,您可以在用户完成输入后尝试自动检测格式(可能使用正则表达式),然后根据需要使用检测来运行验证代码的自定义部分。如果无法自动区分不同的格式,您必须让用户从支持格式的预定义列表中选择他们输入的格式,以便您可以使用它来选择正确的验证等。
标签: c# asp.net-mvc razor entity-framework-6