捆绑的脚本不工作MVC

时间:2013-07-03 19:17:07

标签: asp.net-mvc bundling-and-minification

我已经捆绑了jquery验证脚本,如:

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

并在_Layout中呈现为

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

但是当我尝试在按钮上验证我的表单时点击:

$("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });

它给我的错误如下:

0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'validate'

所以有人建议我解决这个问题。

2 个答案:

答案 0 :(得分:3)

您能否确保UnobtrusiveJavaScriptEnabled启用了web.config

  <appSettings>
    ...
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    ...
  </appSettings>

答案 1 :(得分:1)

运行时将未缩小的缩小版本(基于标准JavaScript命名约定)排除在外,因此,如果指定"~/Scripts/jquery.unobtrusive*"路径,则在缩小关闭时,说明符将包含jquery.unobtrusive.jsjquery.unobtrusive.min.js当缩小开启时。

查看您的Scripts文件夹中是否有jquery.unobtrusive.min.js和jquery.validate.min.js文件。

要手动启用缩小功能,请在添加捆绑包后粘贴BundleTable.EnableOptimizations = true;

编辑:

您的错误说明验证方法尚未声明。 在致电@Scripts.Render("~/bundles/jqueryval")之前,请检查您的$("form").validate()是否位于 要么 将validate调用包装成jQuery(callback) function,如下所示:

$(function(){
    $("form").validate({
                    errorPlacement: function (error, element) {
                        error.insertAfter(element).css("display", "inline");
                    }
                });
})

这将等到所有文档都加载完毕。