【发布时间】:2014-05-01 11:40:05
【问题描述】:
我从第一个 MVC 应用程序开始。在这里,我有基本的困惑。实际上创建的默认 _Layout.cshtml 文件如下所示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<script>
</script>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
我使用的是基本模板,所以没有任何模板。但请检查 '@Scripts.Render("~/bundles/jquery")' 行。它在@RenderBody() 之后。所以它实际上是在正文部分之后添加的。
我认为这实际上是最佳实践。但是如果我添加 $.(document).ready 它会显示以下错误
Microsoft JScript 运行时错误:“$”未定义
基于错误,它是由于脚本标签。我只是将 '@Scripts.Render("~/bundles/jquery")' 行移到了@Render body 和最后一页之前
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
</head>
<body>
<script>
</script>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
applicationw 与我的 jquery 配合得很好。
那么为什么会这样呢?所以总是在 @RenderBody 之前添加标签的脚本?那为什么默认模板显示在错误的位置?
【问题讨论】:
-
感谢 satpal 的编辑。我实际上正在编辑。
-
jQuery 未加载,因此您收到错误
'$' is undefined。当您在 head 部分移动@Scripts.Render("~/bundles/jquery")时,首先加载 jquery,然后执行代码 -
默认模板这样构造是有原因的。将 jQuery 包移到头部将解决您的问题,但会在客户端引入其他问题(想想 UX)。您应该听取@Ufuk Hacıoğulları 的建议
标签: jquery asp.net-mvc asp.net-mvc-4