为什么此自定义客户端非侵入式MVC验证不起作用?

时间:2018-11-25 20:37:04

标签: javascript jquery asp.net-mvc validation unobtrusive-validation

我正在尝试使用ASP.NET MVC来整理一个简单的表单,但是在尝试使自定义客户端客户端无干扰的验证正常工作时遇到了麻烦。在过去的两天里,我浏览了许多有关ASP.NET客户端验证的教程,博客和其他页面。那里的信息令人困惑,不完整和矛盾。我所能找到的最好的方法是,一些营销的巨型代码非常酷,然后是一些代码,没有对使用过的功能的解释。

我将在此处发布html代码,因为我几乎100%确信问题出在客户端。为方便起见,这是我的视图创建的简化html。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test</title>
</head>
<body>
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.0.min.js"></script>
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
    <script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>

    <script>

        function myValidationFunction(value) {
            return false;
        }


        jQuery.validator.addMethod("mycustomvalidation", function (value, element, params) {
            return myValidationFunction(value);
        });

        jQuery.validator.unobtrusive.adapters.add("mycustomvalidation", ["other", "comp", "value"],
            function (options) {
                options.rules['requiredif'] = {
                    other: options.params.other,
                    comp: options.params.comp,
                    value: options.params.value
                };
                options.messages['mycustomvalidation'] = options.message;
            }
        );


    </script>

    <form action="/test.htm" method="post">

        <label for="Field1">Field1</label>
        <input data-val="true" data-val-required="Field1 is required." id="Field1" name="Field1" type="text" value="" />
        <span class="field-validation-valid error-text" data-valmsg-for="Field1" data-valmsg-replace="true"></span>

        <label for="Field2">Field2</label>
        <input data-val="true" data-val-myvalidation="Field2 is not valid" data-val-myvalidation-validationcallback="myValidationFunction" id="Field2" name="Field2" type="text" value="" />
        <span class="field-validation-valid error-text" data-valmsg-for="Field2" data-valmsg-replace="true"></span>

        <input type="submit" value="TEST" />

    </form>
</body>
</html>

为澄清起见,Field1使用内置的“必需”验证。我包括它只是为了检查jquery.validate.min.js和jquery.validate.unobtrusive.min.js是否确实有效。

到目前为止,我将描述我的推理。在某些博客中,我发现您所要做的就是创建元标记data-val-myvalidation-validationcallback =“ myValidationFunction”,它将验证与功能myValidationFunction关联。剩下要做的就是在脚本中实现此功能。当然,这是行不通的。

另一篇教程是关于在文档加载后解析表单,解析元标记并建立适当的连接的内容。好吧,这也不是真的。

0 个答案:

没有答案