gpt4 book ai didi

asp.net-mvc-4 - MVC4 自定义不显眼的验证器不起作用

转载 作者:行者123 更新时间:2023-12-04 17:10:36 26 4
gpt4 key购买 nike

不知道出了什么问题。语法似乎正确......但它仍然不会在客户端触发。如果我提交表单,我会得到服务器端验证,客户端什么都没有......

这是页面上的代码:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
<script type="text/javascript">
// we add a custom jquery validation method
(function ($) {
$.validator.addMethod('additive', function (value, element, params) {
//just return false to test it.
return false;
});
// and an unobtrusive adapter
$.validator.unobtrusive.adapters.add("additive", ["field2", "field3", "field4"], function (options) {
var params = {
field2: options.params.field2,
field3: options.params.field3,
field4: options.params.field4
};
options.rules['additive'] = params;
if (options.message) {
options.messages['additive'] = options.message;
}
});
}) (jQuery);
</script>

这是验证器上与客户端(IClientValidatable)相关的部分:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule
{
ValidationType = "additive",
ErrorMessage = "ERROR MESSAGE"
};

rule.ValidationParameters.Add("field2", propName2);
rule.ValidationParameters.Add("field3", propName3);
rule.ValidationParameters.Add("field4", propName4);

yield return rule;
}

模型装饰如下:
[SumValidation("OtherField2...")]
public int MyField { get; set; }

当字段呈现时,它就在那里,所有来自服务器端的 data-xxx 属性的东西。只是这个特定的客户端验证不会触发。有人看到我缺少什么吗?

最佳答案

弄清楚了。如果有人遇到这种情况。在页面上添加自定义验证太晚了。在我将自定义验证 javascript 移动到 _Layout.cshtml 的 head 部分后,它开始工作。

因此,如果您的脚本看起来正确,则是检查的好地方。

另一种解决方法是运行 $.validator.unobtrusive.parse('form');这会重新加载所有验证器。

关于asp.net-mvc-4 - MVC4 自定义不显眼的验证器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com