asp.net-mvc - 如何在 mvc 4 -- asp.net 中捆绑和渲染脚本?

标签 asp.net-mvc

我最近了解到我可以捆绑我的脚本 js/css 以获得更好和优化的性能。我尝试用我的 mvc 项目实现此功能,但脚本未呈现。我在 App_Start 下添加了我的bundleconfig类,如下所示。

public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/Content/bundles/js").Include(

                       "~/Content/js/jquery.min.js",

                       "~/Content/js/bootstrap.min.js",

                       "~/Content/js/JobWebSite.js",

                       "~/Content/js/bootstrap-datetimepicker.min.js",
                       "~/Content/js/bootstrap-filestyle.min.js"

                       ));

            bundles.Add(new StyleBundle("~/Content/bundles/css").Include(

                      "~/Content/css/style.css",

                      "~/Content/css/bootstrap.min.css",
                      "~/Content/css/bootstrap-datetimepicker.min.css",
                      "~/Content/css/social-buttons.css",
                      "~/Content/css/font-awesome.min.css"

                      ));
        }
    }

注意:new ScriptBundle("虚拟路径")。请问虚拟路径应该是什么?我创建了一个新文件夹并将它们指定为我的虚拟路径。我期望看到捆绑后创建的一些文件,但文件夹仍然是空的。在我的 Global.asx 中,我添加了以下行。

JobWebSite.WebUI.App_Start.BundleConfig.RegisterBundles(System.Web.Optimization.BundleTable.Bundles);

我尝试从 LayoutPage 渲染我的包

 @Scripts.Render("~/Content/bundles/cs")

正如我看到的一些地方,但没有任何渲染。而且我的虚拟路径仍然是空的。请问我缺少什么?任何更好的评论或解释将不胜感激。

最佳答案

您可以像这样制作样式包:

bundles.Add(new StyleBundle("~/styles")
                .Include("~/Content/Styles/bootstrap.css")
                .Include("~/Content/Styles/Site.css"));

名称~/styles是您的虚拟路径

你的脚本捆绑如下:

bundles.Add(new ScriptBundle("~/scripts")
                .Include("~/Scripts/jquery-2.1.3.js")
                .Include("~/Scripts/jquery.validate.js")
                .Include("~/Scripts/jquery.validate.unobtrusive.js")
                .Include("~/Scripts/bootstrap.js"));

名称~/scripts又是您的虚拟路径

例如,在布局文件中使用这些包。执行以下操作:

对于样式:

@Styles.Render("~/styles")

对于脚本:

@Scripts.Render("~/scripts")

在您的示例中,可以像这样更改名称:

bundles.Add(new ScriptBundle("~/scripts").Include(

   "~/Content/js/jquery.min.js",

   "~/Content/js/bootstrap.min.js",

   "~/Content/js/JobWebSite.js",

   "~/Content/js/bootstrap-datetimepicker.min.js",
   "~/Content/js/bootstrap-filestyle.min.js"

   ));

bundles.Add(new StyleBundle("~/styles").Include(

  "~/Content/css/style.css",

  "~/Content/css/bootstrap.min.css",
  "~/Content/css/bootstrap-datetimepicker.min.css",
  "~/Content/css/social-buttons.css",
  "~/Content/css/font-awesome.min.css"

  ));

然后您可以像我上面所示的那样调用这些包。这些名称可以是任何名称,只要您能够区分它们即可。

但是,如果您想继续使用您选择的名称,那么您也可以按照上面的示例使用这些名称来调用它们。只需替换虚拟路径名称即可。

注意:您无需更改 Global.asax 文件即可调用您的 bundle 。 BundleConfig 类正在 Global.asax 中的以下行中注册:BundleConfig.RegisterBundles(BundleTable.Bundles);。如果您有一个空应用程序,那么这就是您要添加到 Global.asax 中的 Application_Start() 方法中的行

关于asp.net-mvc - 如何在 mvc 4 -- asp.net 中捆绑和渲染脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173713/

相关文章:

c# - 具有键 'XXX' 的 ViewData 项的类型为 'System.Int32' 但必须为 'IEnumerable<SelectListItem>' 类型

mysql - 使用 MVC 处理tinyInt boolean 值

asp.net-mvc - 无法将 Application Insights 添加到项目

javascript - Google oAuth - 在 JS 中验证用户,但在 C# 中使用

c# - 列表验证中的 Asp.NET 唯一项

View 中的 ASP.NET Razor 模型语法

android - 在 MVC Web 应用程序上实现 FCM(Firebase 云消息传递)

jquery - Ajax 不工作并且控制台没有给出任何错误-MVC

asp.net-mvc - 返回 ASP.Net Core MVC 中的上一页

asp.net-mvc - 如何检查浏览器是否启用cookie