【发布时间】:2012-10-01 10:10:51
【问题描述】:
我有一个项目,我正在使用 Razor 视图使用 MVC 3 开发。
我有一个 Decimal 数据类型,用户可以在其中输入金额。数据被提交给第三方,他们坚持该金额最多保留 2 个小数位。金额必须大于零。最大数量取决于从数据库中检索的值。所以我不能硬编码最大范围,比如 9999.99。
示例:- 假设当前交易的最大金额为 123.45。我需要验证用户在文本框中输入的金额在 0.01 到 123.45 之间。如果用户输入 123.46,这将是无效的,因为它超过了最大值。如果用户输入 100.123,这也是无效的,因为它会超过 2 位小数的最大值。
到目前为止的研究......我想我会先尝试解决小数位问题。我想知道将其应用于我的模型是否可行...
<DisplayFormat(ApplyFormatInEditMode:=True, DataFormatString:="{0.00}")>
Public Property PaymentAmount As Decimal
查看:-
@Html.TextBoxFor(Function(model) model.PaymentAmount)
...但这似乎无济于事。
问题:-
如何为限制为 2 位小数的范围创建验证,该范围接受 0.01 到 X 之间的值(其中 X 是在显示视图之前从数据库返回的最大预定值)?
这是否也适用于不显眼的客户端验证?
我正在考虑创建一个自定义验证属性,并将其用于客户端验证,我认为这会起作用,但对于表面上看起来像是一个非常简单的问题的事情来说,这似乎有点矫枉过正。
【问题讨论】:
-
可以使用
^\d*\.?\d{0,2}$这样的正则表达式,也可以直接使用pattern="^\d*\.?\d{0,2}$"这样的html 5模式属性