【问题标题】:Unable to get value of the property 'unobtrusive': object is null or undefined无法获取属性“unobtrusive”的值:对象为 null 或未定义
【发布时间】:2013-06-06 16:42:42
【问题描述】:

当我运行我的代码时,我得到了那个错误:

Unable to get value of the property 'unobtrusive': object is null or undefined

这很正常,但我正在添加我需要的所有 jquery 内容:

jquery.validate-vsdoc.js
jquery.validate.js
jquery.validate.min.js
jquery.validate.unobtrusive.js
jquery.validate.unobtrusive.min.js
jquery.unobtrusive-ajax.js
jquery.unobtrusive-ajax.min.js

我将它加载到我的主窗体上:

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

我的捆绑配置有:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-{version}.js"));

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
            "~/Scripts/jquery-ui-{version}.js"));

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

我的Script 文件夹中有所有相关文件。

为什么会出现此错误? 如果您需要查看任何文件,请发表评论,我很乐意发布它

编辑:

脚本已加载(我检查过) 这一行给出了错误:

jQuery.validator.unobtrusive.prototype.parse.call(this, selector);

错误:

SCRIPT5007: Unable to get value of the property 'unobtrusive': object is null or undefined 

【问题讨论】:

  • 如果您确定所有文件都在那里(例如“jquery.validate.unobtrusive.js”?)您应该使用“grep”命令或“Notepad++”搜索所有脚本“不显眼”的元素。
  • 我 2 分钟前从包管理器控制台进行了更新包,所以它们应该是正确的。
  • 我检查了,元素在那里
  • 因此,请确保使用 Firebug 等调试器、Chrome 或您拥有的调试器将脚本正确加载到您的客户端页面中。此外,请尝试使用“脚本”标签直接在代码页中引用您的脚本。这是使用捆绑包之类的包装器时可能遇到的问题。
  • 是的,这行给了我错误:jQuery.validator.unobtrusive.prototype.parse.call(this, selector);

标签: c# asp.net-mvc jquery


【解决方案1】:

找到问题了。

我有另一个部分视图,它正在添加一个脚本“~/Scripts/jquery...”

所以我将包放在主视图中,而这个包位于始终呈现的菜单的一部分中。 似乎只考虑了最后一个,并且没有在其中添加 Unobtrusive。 从局部视图中删除它并在主视图中只保留一个解决了它。

感谢您的猜测。

【讨论】:

  • 非常感谢。我与这个问题斗争了 5 个多小时。
【解决方案2】:

我得到这个是因为另一个更愚蠢的原因。我的页面中有 jquery.validate.unobtrusive.js 在 jquery.validate.min.js 之前。

只需将 validate 移到 validate validate.unobtrusive 上方即可解决问题。

【讨论】:

    【解决方案3】:

    我收到此错误消息的原因不同,所以我想分享一下。

    我们使用 Microsoft 的 CDN 来提供 jquery.validate.min.js 文件,而我们的客户使用的过滤器将 asp.netcdn.com 列入黑名单,阻止其加载。

    因此,让客户将 CDN 列入白名单或更改 CDN 即可解决此问题。确实,我们应该有一个备用方案,以便在 CDN 不可用但我们尚未实施的情况下提供本地版本。

    【讨论】:

      【解决方案4】:

      我也刚刚处理了这个问题。尽管为 Unobtrusive 和不显眼的验证安装了 nuget 包,但我仍然收到错误消息。

      就我而言,这是因为我忘记包含所需的库之一。原来 jquery.validate.unobtrusive.min.js 依赖于 jquery.validate.min.js。所以额外包含的脚本文件应该是:

      <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
      <script src="~/Scripts/jquery.validate.min.js"></script>
      <script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
      

      【讨论】:

        【解决方案5】:

        Code Junkie 的意思是你是否在 web.config 中添加了不显眼的 javacript enabled 密钥。

        你需要在 appSettings 中添加这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-11
          • 2013-04-24
          • 1970-01-01
          • 2023-03-25
          • 2014-02-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多