如何获取Scripts.Render生成的URL并将其存储到变量中?
获取Bundles生成的带版本号的URL
嘿,刚好对这个场景很熟悉,给你两种常用的解决方案,看你是要在服务器端还是客户端获取:
服务器端直接生成(推荐)
如果你想在后端代码里直接拿到这个URL并存到变量,完全不用依赖页面渲染后的DOM,用BundleTable提供的方法就行:
// 在Controller或者View里都可以使用 string bundleFullUrl = BundleTable.Bundles.ResolveBundleUrl("/bundles/someScript");
这个方法会直接返回和Scripts.Render生成的一模一样的带版本哈希的URL,比如/someURL/bundles/someScript?v=asdY9xOxSVHQfe4hgu-iqLwv6wr6rbpT3YvcuODIqQ1。你可以把它存到变量里,或者通过ViewBag/ViewModel传递到前端使用。
客户端DOM获取
如果是页面渲染完成后,想在JS里拿到这个URL,就通过DOM选择器定位对应的script标签,然后取它的src属性:
// 用属性选择器匹配包含目标bundle路径的script标签 const targetScript = document.querySelector('script[src*="/bundles/someScript"]'); // 拿到URL并存到变量 const bundleUrl = targetScript ? targetScript.src : '';
小提示
- 服务器端的方法更可靠,不会因为页面DOM结构变化而失效,而且不管是Debug还是Release模式都能正确返回对应格式的URL(Debug下如果没开启Bundle优化,会返回未合并的路径,但同样是正确的)。
- 客户端方法适合已经完成页面渲染后,需要动态获取URL的场景,但要注意确保选择器能准确匹配到目标script标签。
内容的提问来源于stack exchange,提问作者rcs
相关产品推荐
相关产品推荐

