我想知道我在这里做得不对的地方是什么.我使用的是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相关问答推荐

Razor页面上@Foreach的正确语法,其中值可以等于多个值

Swashbuckle 通过 .NET 应用程序中的 XML 注释使用格式标识符

ASP.NET web api 无法获取 application/x-www-form-urlencoded HTTP POST

如何为发布模式设置调试错误

获取没有主机的 url 部分

即使使用正确的 Accepts 标头,WebAPI 也不会返回 XML

解析 JSON 响应的最简单方法

从 RowDataBound 事件的 gridview 从单元格中获取值

我需要更改什么以允许我的 IIS7 ASP.Net 3.5 应用程序创建事件源并将事件记录到 Windows EventLog?

可空日期时间转换

ASP.NET 上的 WebSockets 教程

在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs Bundle 资源

如何验证用户在 CheckBoxList 中 Select 了至少一个复选框?

如何判断字符串的第一个字符是否是字母,C#中的任何字母

连接字符串正确时出现实例失败错误

ModalPopupExtender OK 按钮单击事件未触发?

ASP.NET 网格视图与列表视图

ASP.NET Web 窗体中的 jQuery 验证插件

Session.Clear() 与 Session.RemoveAll()

禁用文本框的模型绑定