为什么我要渲染我的Bundle Twice?

时间:2014-01-25 01:44:47

标签: c# jquery asp.net-mvc validation asp.net-mvc-4

MVC项目中,我为validation添加了必要的参考资料:

@Scripts.Render("~/bundles/jqueryval")

在我的_Layout页面中。但是,例如在我的Register页面中,除非我将此代码添加到我的Register页面,否则验证无效。在这两种情况下,当我查看页面的来源时,我会看到必要的参考资料。

<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive-custom-for-bootstrap.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

所以一切都很好。它没有两次添加引用,但我无法弄清楚有什么区别?

这是我的捆绑代码:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

注意:我在_Layout中渲染了几个样式包,但不会导致任何问题。

1 个答案:

答案 0 :(得分:0)

当我尝试在部分视图中进行验证时遇到了同样的问题。

从不同的帖子我的解决方案就像这样:

在部分视图中,我使用<div id="#formDiv>围绕我的编辑字段 并添加脚本

<script>
    $(document).ready(function() {
        $.validator.unobtrusive.addValidation("#formDiv");
    });
</script>

和custom.js:

//Validation on partial views
    $(function () {
        $.validator.unobtrusive.addValidation = function(selector) {
            //get the relevant form 
            var form = $(selector);
            // delete validator in case someone called form.validate()
            $(form).removeData("validator");
            $.validator.unobtrusive.parse(form);
        };
    });