我正在使用Razor视图使用MVC 3开发一个项目。
我有一个十进制数据类型,用户可以在其中输入金额。数据提交给第三方,他们坚持认为金额最多为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是显示视图之前从数据库返回的最大预定值)?
这可以用于不引人注意的客户端验证吗?
我正在考虑创建一个自定义验证属性,并将其连接到我认为可行的客户端验证,但看起来像是一种过度杀戮的东西,从表面上来看似乎是一个非常简单的问题。 / p>
答案 0 :(得分:2)
我认为您需要从数据库中获取最大数量的事务。然后你需要写像,
<input type="text" pattern="^\d*\.?\d{0,2}$" id="txtAmount"/>
<input type="button" id="btnSubmit" onclick="return ValidateAmount(@Model.MaxAmount)"/>
in script block
function ValidateAmount(amt)
{
var useramount=$('txtAmount').val();
if(useramount>amt)
{
alert('max amount exceeded.etc');
return false;
}
else
{
return true;
}
}
如果事务的最大数量是固定的,那么可能没有问题可以直接在javascript代码中使用。希望它有所帮助。