ASP.NET MVC 5捆绑脚本未在_Layout.cshtml

时间:2015-09-26 02:59:53

标签: c# asp.net-mvc scriptbundle

在我开始之前,让我说我知道关于这个问题的其他问题有很多答案,但请让我解释一下我的不同之处。

我有一个ASP.NET MVC 5项目,我有一组bundle:

public class BundleConfig
{
    // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));

        // Use the development version of Modernizr to develop with and learn from. Then, when you're
        // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
        bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));


        bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
            "~/Scripts/bootstrap.js"));

        bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/freelancer.css"));

        // Plugin JavaScript
        bundles.Add(new ScriptBundle("~/bundles/pluginjs").Include(
                "~/Scripts/cbpAnimatedHeader.js",
                "~/Scripts/classie.js"));

        //Custom Theme js
        bundles.Add(new ScriptBundle("~/bundles/customthemejs").Include(
                    "~/Scripts/freelancer.js"));

        // Contact Form JavaScript
        bundles.Add(new ScriptBundle("~/bundles/contactvalidation").Include(
                  "~/Content/jqBootstrapValidation.js",
                  "~/Content/contact_me.js"));
    }

这些在_Layout.cshtml中调用:

    @Scripts.Render("~/bundles/customthemejs")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/contactvalidation")
    @Scripts.Render("~/bundles/pluginjs")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)   
</body>
</html>

在`global.asax:

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

目前我所知道的是:

  1. 所有StyleBundle被调用并成功调用,因此我可以将问题指向引用脚本中的内容
  2. 引用的脚本也在正确的文件夹中,即〜/ Scripts / ....所以我知道它不是引用问题。
  3. 脚本正在运行,因为我使用Web窗体项目测试它们
  4. 我尝试在head的{​​{1}}部分引用捆绑包,但没有变更
  5. VS中的开发工具和VS中的调试器显示脚本未运行
  6. 我唯一的怀疑是,来自_Layout.cshtml的电话与_Layout.cshtml班级
  7. 中的电话号码之间存在差距

    我尝试过其他人在网上推荐的其他解决方案,例如寻找语法错误等等......但据我所知,没有。

    为了使脚本的结构明显,我已经包含了一个屏幕截图: enter image description here

    任何人都可以从不同的角度看待这个,看看我哪里出错了吗?

1 个答案:

答案 0 :(得分:2)

您的代码看起来是正确的,但您引用Microsoft.Web.Optimization应用程序config可能无法正常工作。您可以强制引用,以便应用程序将使用Web.Optimization。在您的捆绑数据上方_Layout.cshtml内,请放置以下内容:

@using System.Web.Optimization

这应该正确执行Web.Optimization

唯一可能出错的其他部分,我们看不到你的Global.asax。您需要确保拨打RegisterBundle

BundleConfig.RegisterBundles(BundleTable.Bundles);
相关问题