【问题标题】:Why do I have to render my Bundle Twice?为什么我必须渲染我的 Bundle 两次?
【发布时间】:2014-02-16 04:54:28
【问题描述】:

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 中渲染了几个样式包,它不会导致任何问题。

【问题讨论】:

  • 您的 _Layout 页面中是否包含“@RenderSection("scripts", required: false)"?
  • @Nathan,不,我猜是,但我删除了它。
  • 没有那个 "@Scripts.Render("~/bundles/jqueryval")" 将无法工作
  • @Nathan,我试过了,没有任何区别
  • 能否展示您完整的(相关部分)注册页面

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


【解决方案1】:

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

从不同的帖子我的解决方案最终是这样的:

在部分视图中,我用&lt;div id="#formDiv&gt; 包围我的编辑字段 并添加脚本

<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);
        };
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多