所以这很脏但有效:
我已经覆盖ValidatorValidate
了框架的功能:
function ValidatorValidate(val, validationGroup, event) {
// new code:
if (typeof (val.customized) == "undefined") {
var data = $(val).data();
for (var key in data) {
val[key] = data[key];
}
val.customized = true;
}
// this code was copied from the framework:
val.isvalid = true;
if ((typeof (val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
if (typeof (val.evaluationfunction) == "function") {
val.isvalid = val.evaluationfunction(val);
if (!val.isvalid && Page_InvalidControlToBeFocused == null &&
typeof (val.focusOnError) == "string" && val.focusOnError == "t") {
ValidatorSetFocus(val, event);
}
}
}
ValidatorUpdateDisplay(val);
}
现在我可以通过使用数据属性在验证器上强制使用特定的 JS 变量。要强制RangeValidator
使用en-US
语言环境,我只是强制它设置decimalchar
为.
和digits
从2
ASPX 标记:
<asp:RangeValidator ID="rv" runat="server" Data-DecimalChar="." Data-Digits="2" MinimumValue="-100" MaximumValue="100" ControlToValidate="tb" Type="Currency" />
但是,这很脏,不是吗?...
在覆盖涉及客户端验证机制的 JS 函数时,请注意 UpdatePanels 的问题,例如这个。
我真正感到困惑的是,即使我只修改客户端脚本,它也能正常工作。服务器端验证接受来自英语文化的值。这真的很奇怪。