为什么我必须包含JS文件才能在每个视图中使用jquery?

时间:2016-04-17 15:13:33

标签: javascript jquery asp.net-mvc bundle

正如问题所说的那样,但是为了向您提供更多信息,我在Asp.NET Mvc应用程序中包含了所有.js文件,如下所示:

<script src="~/Scripts/jquery-1.10.2.js"></script>

即使我必须在每个页面中包含.js个文件,以便能够使用jQuery,否则它不起作用。我试图将这些脚本文件包含在BundleConfig中,令人惊讶的是脚本甚至在布局页面上都没有工作。诀窍是什么?!

1 个答案:

答案 0 :(得分:0)

一般来说,你的项目中有一个App_Start / BundleConfig.cs

public class BundleConfig
{
    public static readonly string SiteJquery1Bundle = "~/bundles/jquery1";
    public static readonly string SiteJquery2Bundle = "~/bundles/jquery2";

    public static void RegisterBundles(BundleCollection bundles)
    {
        // We will choose bundle to render depending on IE version in view
        bundles.Add(new Bundle(SiteJquery1Bundle)
               .Include("~/Scripts/jquery-1.10.2.js"));
        bundles.Add(new Bundle(SiteJquery2Bundle)
               .Include("~/Scripts/jquery-2.1.3.min.js"));

    }

在您的Shared / _Layout.cshtml视图中添加:

<html>
<head>
<title>...</title>
<!--[if lt IE 9]>
@Scripts.Render(BundleConfig.SiteJquery1Bundle)
<![endif]-->
<!--[if gte IE 9]><!-->
@Scripts.Render(BundleConfig.SiteJquery2Bundle)
<!--<![endif]-->
...
</head>

因此,默认的ASP.NET MVC项目添加了_ViewStart.cshtml,它定义了每个视图中的单个布局。并检查Global.asax.cs中的包注册

protected void Application_Start()
{
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    // ...
}