【发布时间】:2013-11-06 11:12:25
【问题描述】:
我正在尝试通过更改检索静态资源(如 javascript 和 css 文件)的方式,在我的 ASP.net MVC 4 项目 (VB.net) 中实现一些静态资源改进。
我一直在关注此链接 (ASP.NET & MVC 4: Cookieless domain for bundling and static resources ) 来帮助完成此操作,但我遇到了一个问题,即未呈现未捆绑的 javascript 和 css 文件。
通常在渲染 .js 或 .css 包时,您会使用以下内容:
@Scripts.Render("~/bundles/jquery")
这将在开发模式下单独呈现 ~/bundles/jquery 包中的每个脚本标签,并在生产模式下呈现指向缩小包的单个脚本标签。
根据上面的链接,当脚本被捆绑到一个文件中时,您可以使用以下行:
<script src="@Url.StaticContent("~/bundles/jquery")" type="text/javascript"></script>
这对我来说适用于捆绑文件,因为 src 属性有效并且 StaticContent 函数能够更改 src URL。但是在开发模式下,捆绑的文件不存在,因为没有发生捆绑,所有的脚本都是由@Scripts.Render单独渲染到浏览器的,所以这个方法不起作用。
有谁知道是否可以为 Scripts 助手创建一个扩展方法来完成我所需要的,还是我必须做这样的事情?
@If Misc.IsLocalDev Then
@Scripts.Render("~/bundles/jquery")
Else
@<script src="@Url.StaticContent("~/bundles/jquery")" type="text/javascript"></script>
End If
【问题讨论】:
-
出于兴趣,你为什么要这样做——是为了让你在脚本调用中添加额外的属性吗?
-
我正在尝试这样做,因此 cookie 数据不会与获取静态资源的请求一起发送,因为它们不需要 cookie。这也意味着可以建立更多的并发浏览器连接以加快页面加载速度。
-
投反对票的不是我,所以我说不出为什么。在午餐时间完全错过了静态域引用,这实际上是我以前使用过的一种技术(减去捆绑)。在调试模式下可以使用未压缩的单独文件对您来说很重要吗?
-
另外,我可以使用正确的语言获取任何代码,您是在使用带有 VisualBasic.NET 还是 C# 的 ASP.NET MVC?上面的示例(异常)暗示了前者。
-
感谢您抽出宝贵时间!我宁愿他们是这样,因为它使调试任何潜在的 JS 错误变得更加容易。抱歉,我正在使用 VB.net。
标签: asp.net-mvc bundle extension-methods