【发布时间】:2014-05-12 12:41:22
【问题描述】:
我正在实施一个捐赠表格,我有一个带有“金额”字段的Donation 模型:
[Required]
[DataMember(IsRequired = true)]
[Range(36, 10000)]
public decimal Amount { get; set; }
我还在视图中设置了它的验证:
<div class="editor-label">
@Html.LabelFor(model => model.Payment.Amount)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Payment.Amount)
@Html.ValidationMessageFor(model => model.Payment.Amount)
</div>
问题是当用户在网页中选择不同的“货币”时,某些货币的最低金额应该更改。
我尝试做的是更改Input 属性:
$("#Donation_Currency").change(function () {
var curr = this.value;
switch (curr) {
case "USD":
document.getElementById("Donation_Amount").setAttribute("data-val-range", "The field Amount must be between 36 and 10000.");
document.getElementById("Donation_Amount").setAttribute("data-val-range-min", "36");
break;
case "ILS":
document.getElementById("Donation_Amount").setAttribute("data-val-range", "The field Amount must be between 100 and 10000.");
document.getElementById("Donation_Amount").setAttribute("data-val-range-min", "100");
break;
default:
}
});
但即使我看到输入属性发生了变化,我仍然看到旧消息出现。
我肯定做错了,但问题是:
如何根据另一个字段中设置的值更改字段的验证?
【问题讨论】:
-
您确定消息来自客户端验证吗?可能是输入在客户端验证成功,但是当它到达服务器时,它会返回消息,因为服务器上的范围仍然在 36 到 10000 之间。
-
嗨@srinivas.naik。当我在开发人员模式下查看输入的属性时,不仅如此,我将其设置为比原来更大的值(100 而不是 36) - 所以服务器上较低的最小值仍然存在。跨度>
标签: asp.net-mvc asp.net-mvc-4 jquery-validate unobtrusive-validation