【发布时间】:2014-01-03 05:07:37
【问题描述】:
使用了 ASP.NET MVC4 应用程序 MVC4 buildit 捆绑和缩小。 应用程序也应离线工作。
我尝试使用下面的代码创建清单,但这不起作用,因为 v= 参数会改变 如果源代码被更改。 如果使用捆绑和缩小,如何创建无需手动更改捆绑查询字符串参数即可工作的清单?
<!DOCTYPE html>
<html manifest="~/Sale/Manifest">
<head>
@Erp.Helpers.Bundles.Render("~/css/pos", new { media = "screen" })
@Erp.Helpers.Bundles.Render("~/css/receipt", new { media = "print" })
@Scripts.Render("~/pos.js")
</head>
控制器:
public ContentResult Manifest()
{
return new ContentResult()
{
Content = @"CACHE MANIFEST
CACHE:
pos?v=esdw2223023094323
css/pos?v=ewe3334324r33432343
css/receipt?v=w333543334324r33432343
NETWORK:
*
"
};
}
C# Web.Optimization Bundles and HTML5 cache Manifest 包含类似的问题但没有答案。
更新
我尝试了答案,但在 chrome 控制台中出现错误
Application Cache Error event: Resource fetch failed (404) http://localhost:52216/erp/Sale/pos.js
应用程序正在运行
BundleTable.EnableOptimizations = true;
在 VSE 2013 for Web 中按 F5 进入调试模式
我在答案中尝试了使用
的建议public class SaleController : ControllerBase
{
public ContentResult Manifest()
{
return new ContentResult()
{
Content = string.Format(@"CACHE MANIFEST
CACHE:
{0}
{1}
{2}
",
Scripts.Url("pos.js"), // tried also Scripts.Url("pos")
Styles.Url("css/pos"),
Styles.Url("css/receipt")),
... 在控制器中。
在浏览器中查看源码
<html manifest="/erp/Sale/Manifest">
<head>
<link href="/erp/css/pos?v=sN8iz_u3gRGE6MQKGq6KocU-SUIUMcQxKVuESa_L2l41" rel="stylesheet" media="screen"/>
<link href="/erp/css/receipt?v=C6qCUe6W1VM6yxNe-RgZRY9R0Gws1vU0lMuoKIn1uVE1" rel="stylesheet" media="print"/>
<script src="/erp/pos.js?v=a-TsureIIlzxwhaItWMV7Ajfw-YXE3x6hUld3cxwAqI1"></script>
生成的清单包含
CACHE MANIFEST
CACHE:
/erp/Sale/pos.js
/erp/Sale/css/pos
/erp/Sale/css/receipt
如何解决这个问题? 似乎生成了无效的 url 来显示:
- 销售目录已添加
- 查询字符串不存在
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-4 bundling-and-minification cache-manifest