我认为这是不可能的。好吧,没有什么可以阻止您从外部应用程序渲染样式和脚本包。您可以使用本机手动拉取捆绑的资源script
标签并指定绝对网址...
<script src="http://domain.com/bundles/jquery"></script>
或使用Scripts.Render
剃须刀的帮手...
@Scripts.Render("http://domain.com/bundles/jquery")
但是,如果资源服务器更改这些样式/脚本包的内容,您将遇到缓存问题,因为使用应用程序将无法解析缓存查询字符串。无法解决的原因似乎很明显......Scripts.Render
helper 使用当前应用程序的 Web 优化框架来呈现缓存查询字符串,但是,使用应用程序使用 Web 优化框架的不同实例。
我不知道这在幕后是如何工作的,我唯一确定的是,当包内容(文件)更改时,缓存查询字符串也会更改。我猜测缓存查询字符串使用某种基于机器键值或其他东西的哈希算法...这只是我的猜测,但如果您热衷于了解,您当然可以查看源代码这个的底部...
http://aspnetoptimization.codeplex.com/SourceControl/latest http://aspnetoptimization.codeplex.com/SourceControl/latest
建议1
因为这些问题似乎没有任何解决方法,如果拥有外部资源服务器来为其他应用程序提供通用样式和脚本对您的项目至关重要的话。我只需如上所述手动访问它们,并通过在捆绑包名称末尾附加一个数字来对资源进行版本控制...
@Scripts.Render("http://server.com/bundles/name1")
并更新您的应用程序以在每次更新资源时引用正确的版本,以避免浏览器呈现旧的缓存版本。
建议二
另一种方法(不会给上面的方法带来任何新内容)是实现您自己的优化例程,这似乎并不难。如果您需要的话,它可能会提供一些灵活性。看看这个艾延德的文章 http://ayende.com/blog/13314/elegant-code-raccoon-blogs-css-controller...请确保您也阅读了评论
就我个人而言,我不喜欢他将文件名附加到查询字符串的方式,但是,只要您能够解析包的 url,您就不必这样做。