繁体   English   中英

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

[英]ASP.NET MVC 5 bundled scripts not being called in _Layout.cshtml

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

我有一个 ASP.NET MVC 5 项目,其中有一组包:

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. 我曾尝试在_Layout.cshtmlhead部分引用包,但没有变化
  5. chrome 中的开发工具和 VS 中的调试器显示脚本没有运行
  6. 我唯一的怀疑是_Layout.cshtml的调用和BundleConfig类中的包之间存在差距

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

为了使脚本的结构显而易见,我提供了一个屏幕截图: 在此处输入图片说明

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

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

@using System.Web.Optimization

那应该正确地执行Web.Optimization

唯一可能出错的其他部分,我们看不到是您的 Global.asax。 您需要确保您调用了RegisterBundle

BundleConfig.RegisterBundles(BundleTable.Bundles);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM