在MVC中添加脚本

Akh*_*hil 7 asp.net-mvc jquery asp.net-mvc-4

我从第一个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>
Run Code Online (Sandbox Code Playgroud)

我使用了基本模板,因此没有任何模板.但请检查'@ Scripts.Render("〜/ bundles/jquery")'行.它在@RenderBody()之后.所以它实际上是在身体部分之后添加的.

我认为这实际上是最好的做法.但如果我添加$.(文档).ready它会显示以下错误

Microsoft JScript运行时错误:'$'未定义

基于错误,它因脚本标记而异.我刚刚在@Render身体和最后一页之前移动了@@ Scripts.Render("〜/ bundles/jquery")'行

<!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>
Run Code Online (Sandbox Code Playgroud)

applicationw适用于我的jquery.

那么为什么会这样呢?所以在@RenderBody之前总是需要添加标签的脚本吗?那为什么默认模板显示在错误的位置?

Ufu*_*arı 15

这可能是因为您在页面中的jQuery引用之前添加脚本.您需要scripts在视图的部分内编写脚本:

@section scripts {
    //stuff
}
Run Code Online (Sandbox Code Playgroud)

这将确保它将在jQuery引用(RenderSection调用)之后呈现.