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>