Asp.net mvc 在MVC\u布局页面中放置脚本的位置

Asp.net mvc 在MVC\u布局页面中放置脚本的位置,asp.net-mvc,Asp.net Mvc,您好,我从本网站的阅读建议中了解到,脚本应该放在布局页面的底部。我的问题是,我不确定到底“底部”在哪里。有些人说它就在标签前面,但这对我来说不起作用。我试着把剧本放在很多地方,但似乎没有一个地方起作用。有人能告诉我我做错了什么吗 这是我的关于页面 @{ ViewBag.Title = "About Us"; } <h2>About</h2> <p> Put content here. </p> <script type=

您好,我从本网站的阅读建议中了解到,脚本应该放在布局页面的底部。我的问题是,我不确定到底“底部”在哪里。有些人说它就在标签前面,但这对我来说不起作用。我试着把剧本放在很多地方,但似乎没有一个地方起作用。有人能告诉我我做错了什么吗

这是我的关于页面

@{
    ViewBag.Title = "About Us";
}

<h2>About</h2>
<p>
     Put content here.
</p>

<script type="text/javascript">
  $(function () {
    alert("Hello World");
  });
</script>
@{
ViewBag.Title=“关于我们”;
}
关于

把内容放在这里。

$(函数(){ 警报(“你好世界”); });
这是我的布局页面

<!DOCTYPE html>
<html>
<head>
  <title>@ViewBag.Title</title>
  <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
  @* jQuery works if this line is here but not if it is at the bottom
   <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
  *@
</head>
<body>
  <div class="page">
    <div id="header">
      <div id="title">
        <h1>
          My MVC Application</h1>
      </div>
      <div id="logindisplay">
        @Html.Partial("_LogOnPartial")
      </div>
      <div id="menucontainer">
        <ul id="menu">
          <li>@Html.ActionLink("Home", "Index", "Home")</li>
          <li>@Html.ActionLink("About", "About", "Home")</li>
        </ul>
      </div>
    </div>
    <div id="main">
      @RenderBody()
    </div>
    <div id="footer">
    </div>
  </div>
  @* jQery does not work if the script is here! *@
  <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
</body>
</html>

@视图包。标题
@*如果这一行在这里,jQuery就可以工作,但如果它在底部,jQuery就不能工作
*@
我的MVC应用程序
@Html.Partial(“\u lognPartial”)
  • @ActionLink(“主页”、“索引”、“主页”)
  • @ActionLink(“关于”、“关于”、“主页”)
@RenderBody() @*如果脚本在这里,jQery就不起作用*@
在文档中找到对Jquery的第一次引用之前,必须包含Jquery文件。因此,为了解决这个问题,我将jquery文件放在head部分,在关闭body标记之前,将包含视图中未使用但在其他脚本文件中使用的所有其他脚本 完全有可能将jquery放在body标记的末尾。理想情况下,你脑子里只有
modernizer
html5shiv
之类的东西

选择1
在jQuery
Hello Muhammad之后放置一个
@RenderSection(“scripts”,required:false)
,非常感谢您的清晰解释。非常感谢。我认为对脚本使用RenderSection的替代方法更干净。因此,对于选项1,我们是否应该将其放在所有视图中,并且脚本放在这些大括号中?到目前为止,这似乎是可行的,但我认为_layout.cshtml页面应该加载所有脚本和每个页面上的所有内容,而不需要额外的工作。否?@DanielJackson您可以在
\u layout.cshtml
中放置一个
@RenderSection
,然后在每个页面中只加载页面所需的js库。您也可以在
\u layout.cshtml
中一次性加载缩小的绑定js库。现在有很多有效打包js的策略,例如。
@section scripts
{
  <script type="text/javascript">
    $(function () {
      // page specific js code here
    });
  </script>
}
<script 
  src="@Url.Content("~/Scripts/" + ViewContext.RouteData.GetRequiredString("action") + ".js")" 
  type="text/javascript">
</script>