我想知道我在这里做得不对的地方是什么.我使用的是ASP.NET C#MVC4,我想使用新的CSS/js优化功能.

这是我的HTML部分

@Styles.Render("~/content/css")

这是我的BunduleConfig.cs

bundles.Add(new StyleBundle("~/content/css").Include(
                        "~/content/css/reset.css",
                        "~/content/css/bla.css"));

// BundleTable.EnableOptimizations = true;

输出(Works):

<link href="/content/css/reset.css" rel="stylesheet"/>
<link href="/content/css/bla.css" rel="stylesheet"/>

然而,当我取消注释BundleTable.EnableOptimizations = true;时,html输出如下所示

<link href="/content/css?v=5LoJebKvQJIN-fKjKYCg_ccvmBC_LF91jBasIpwtUcY1" rel="stylesheet"/>

这是,当然是404.我不知道我哪里做错了,请帮帮忙,第一次使用MVC4.

推荐答案

我想问题是你把包放在一个虚拟的URL上,这个URL实际上存在,但它是一个目录.

MVC是从您的Bundle 包生成一个虚拟文件,并从您指定为Bundle 包路径的路径提供它.

该问题的正确解决方案是使用Bundle 包路径,该Bundle 包路径不直接映射到现有目录,而是在该目录内使用虚拟文件名(也不映射到真实文件名).

例子:

如果您的网站有一个名为/content/css的文件夹,请按如下方式创建css包:

在BundleConfig.反恐精英:

bundles.Add(new StyleBundle("~/content/css/AllMyCss.css").Include(
                        "~/content/css/reset.css",
                        "~/content/css/bla.css"));

在这一页上:

@Styles.Render("~/content/css/AllMyCss.css")

请注意,这假设您没有名为AllMyCss的文件.css在你的css文件夹中.

Asp.net相关问答推荐

IISExpress未在ARM64 Mac/.NET 4.8上启动

无法翻译 LINQ

Window.Open 使用 PDF 流而不是 PDF 位置

如何将配置转换应用于外部配置文件

asp.net mvc 中的 RedirectToAction 用法

HttpContext.Current.Request.IsAuthenticated 和 HttpContext.Current.User.Identity.IsAuthenticated 有什么区别?

asp.net cookie、身份验证和会话超时

如何使用 ASP.Net MVC 路由来路由图像?

哪些行为驱动开发 (BDD) 工具/框架可用于 Microsoft Stack?

如何使用自动生成的列隐藏 ASP.NET GridView 中的列?

ASP.net 与 PHP( Select 什么)

带有文件名的 ASP.net MVC4 WebApi 路由

ASP.NET 中的多选下拉列表

.NET 上的 HTTP/2(HTTP2 或 SPDY)

与 Twitter Bootstrap Bundle 的 ASP.NET MVC4

当.NET抛出WebException((400)错误请求)时如何处理WebResponse?

带有模型的 ASP.NET MVC 重定向

将 MemoryStream 写入响应对象

使用 ConfigurationManager.RefreshSection 重新加载配置而不重新启动应用程序

Application_Start 和 Application_OnStart 之间的区别