0

我有一个使用 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)

...但这似乎无济于事。

问题:-

  1. 如何为限制为 2 位小数的范围创建验证,该范围接受从 0.01 到 X 的值(其中 X 是在显示视图之前从数据库返回的最大预定值)?

  2. 这也可以与不显眼的客户端验证一起使用吗?

我正在考虑创建一个自定义验证属性,并将其用于客户端验证,我认为这会起作用,但对于表面上看起来像是一个非常简单的问题的东西来说似乎有点矫枉过正。

4

1 回答 1

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 代码中使用可能没有问题。希望能帮助到你。

于 2012-10-01T10:59:20.213 回答