MVC 4 Razor 和 Jquery UI datepicker()“对象不支持属性或方法”

Posted

技术标签:

【中文标题】MVC 4 Razor 和 Jquery UI datepicker()“对象不支持属性或方法”【英文标题】:MVC 4 Razor and Jquery UI datepicker() "Object doesn't support property or method" 【发布时间】:2013-10-24 00:51:03 【问题描述】:

我可能刚刚花了两个小时试图弄清楚这一点。

我的 MVC 应用程序抛出的具体错误是这样的: "0x800a01b6 - javascript 运行时错误:对象不支持属性或方法 'datepicker'"

这是我的代码:

_Layout.cshtml:

<head>

...
<script type="text/javascript" src="../../Scripts/jquery-2.0.3.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-ui-1.10.3.js"></script>
</head>

视图 .cshtml

@
    ...
    Layout = "~/Views/Shared/_Layout.cshtml";


...
<div>
    Change Time Span:
    <br />
    From:
    <input type="text" id="test" />
</div>

<div class="loading" id="container">@Model.LoadingMessage</div>

<script type="text/javascript">
    $(document).ready(function () 

        $('#test').datepicker();
    );

</script>

我查看了几个潜在的“重复”问题,但均未成功。以下是我研究过的一些问题:

MVC3 razor view error Microsoft JScript runtime error: Object doesn't support property or method 'datepicker'` jQuery giving error "Object doesn't support this property or method" on method datepicker Using datepicker in MVC 4.0 to persist a date value in db, throwing "object doesn't support this property or method"

    我相信我引用了 jquery 实现我的目标所需的一切。 该元素可以从 Jquery 读取,如果我设置它,它可以看到它的值,所以我认为我的选择器不是问题。 两个 Jquery 包都是通过 NuGet(最新的 Jquery 版本和 Jquery UI 组合库)安装的 我已经重建/清理了 Visual Studio 解决方案(绝望地),关闭本地 IIS 主机并重置它...

我错过了什么? Intellisense 甚至检测到该方法存在,并为我提供有关放置参数的建议。

我错过了什么简单的事情吗?

【问题讨论】:

只是为了确定,你检查过 jquery ui 路径是否正确吗?您可以在 chrome 控制台中检查任何 404 错误吗? 当然 - Chrome 控制台返回:Uncaught TypeError: Object [object Object] has no method 'datepicker' 嗯,只是为了咯咯笑,你能用谷歌 CDN 中的这些替换你的脚本吗: 克里斯,谢谢你的建议。这是另一个类似问题中的建议之一-我肯定尝试过但无济于事。 :// 【参考方案1】:

我发现通过注释掉 _Layout.cshtml 底部的“@Scripts.Render("~/bundles/jquery")”,我能够解决我的问题。

【讨论】:

太棒了。感谢您的帮助,我花了几个小时试图解决这个问题。 这也解决了我的问题! (当然是几年后) 今天仍然与我的挑战相关。谢谢【参考方案2】:
Required scripts
----------------

<link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.10.0.js")" type="text/javascript"></script>



<p>Date:<input type="text" id="Dob" class="datefield" /></p>



<script type="text/javascript">
        $(document).ready(function () 
            $("#Dob").datepicker(
                changeMonth: true,
                changeYear: true
            );
        );
    </script>

【讨论】:

将此标记为答案,因为实际的解决方案是停止将 JQuery2.0 与 JQuery 1.10 一起使用 - 当我使用 JQuery 1.9 或 1.10 而不是 Jquery 2.x 时,日期选择器功能开始起作用.【参考方案3】:

您是否检查过您没有两次引用 JQuery?我发现我已将它包含在我的布局和视图中。删除一个引用解决了这个问题。

【讨论】:

我也发现了这个。第二个与第一个不同。删除第二个解决了我的问题。【参考方案4】:

试试这个:

     <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

或者这个:

     <script" src="~/Scripts/jquery-ui-1.10.3.js"></script>

而不是这个:

   <script type="text/javascript" src="../../Scripts/jquery-ui-1.10.3.js"></script>

【讨论】:

【参考方案5】:

我在升级到 jQuery 2 时遇到了这个问题。我被 jQuery 下载中文件夹结构的变化所吸引; jquery-ui.js 文件不再位于 ui 文件夹中,因此我的脚本标记映射不正确。

简而言之,请仔细检查您的参考资料是否正确!

【讨论】:

以上是关于MVC 4 Razor 和 Jquery UI datepicker()“对象不支持属性或方法”的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net mvc razor 页面中验证 jquery 中的特定表单字段

使用 MVC3 Razor 在 Jquery 中应用图像扩展验证

MVC 4 - Razor - 将变量传递到 href url

ASP.net MVC Core Razor 页面和 Ajax JQuery

如何使用 jquery 或 ajax 在 c#/asp.net 中为 MVC 项目更新 razor 部分视图

ASP.net MVC 3 Razor - jQuery Intellisense