【问题标题】:jQuery is not available in ASP.NET Core 2.2 Razor viewjQuery 在 ASP.NET Core 2.2 Razor 视图中不可用
【发布时间】:2019-06-21 00:17:26
【问题描述】:

我在 Visual Studio 2017 社区(版本 15.9.6)中创建了一个简单的 ASP .Net Core(版本 2.2)Web 应用程序(非 MVC)

默认情况下,jQuery(版本 3.3.1)包含在 wwwroot/lib/jquery 目录中。

我正在获取 jQuery IntelliSense。

在默认的 /Pages/Shared_Layout.cshtml 文件中正确引用了 jQuery。

我在 default.csthml 页面中添加了以下代码:

<script type="text/javascript">
     $(document).ready(function () {
         $("p").click(function () {
             $(this).hide();
         });
     });
</script>

<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>

这个简单的代码默认不起作用。

我不明白为什么。

控制台错误

0x800a1391 - JavaScript 运行时错误:'$' 未定义

标记

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>@ViewData["Title"] - jQueryTest2</title> 
    <link rel="stylesheet" href="~/css/site.css" /> 
</head> 
<body> 
    <header></header> 
    <div class="container"> 
        <main role="main"> @RenderBody() </main> 
    </div> 
    <footer></footer> 
    <environment exclude="Development"> 
        <script src="cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/>
    </environment>
</body> 
</html> 

【问题讨论】:

  • JavaScript 控制台中显示了什么?
  • 我在 $(document).ready 上收到以下错误...0x800a1391 - JavaScript runtime error: '$' is undefined 这似乎表明没有正确引用 jQuery。然而,Visual Studio 中的默认 ASP .Net Core 模板确实引用了 jQuery
  • 你能告诉我们更多的标记吗?
  • @ViewData["Title"] - jQueryTest2
    @RenderBody()
  • 抱歉,我不知道如何
    代码...

标签: jquery asp.net-core


【解决方案1】:

根据您的评论,我们可以看到在运行此脚本元素时 jQuery 尚未实际加载。通常,您需要在 head 元素中加载 jQuery,以确保它可用于在 body 中定义的 script 元素。

【讨论】:

    【解决方案2】:

    首先在Layout.cshtml页面的body底部添加@RenderSection("Scripts", required: false)

    那么你在@section Scripts里面的脚本如下:

    @section Scripts{
        <script type="text/javascript">
           $(document).ready(function () {
               $("p").click(function () {
                 $(this).hide();
               });
           });
        </script>
    }
    

    希望这能解决您的问题!

    【讨论】:

    • 这是我一直做的,但他们发布的标记没有那个设置。
    • 是的!如果没有此设置,jQuery 将无法在该页面上使用。
    • 只是为了澄清...... @section Scripts{} 应该放在 index.cshtml 上,而不是 _Layout 页面上?谢谢!
    • 是的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-08-19
    • 2019-12-27
    • 2016-12-01
    • 2018-02-24
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多