我们可以在HTML页面中使用以下捆绑包而不是CSHTML。 Bundle config是否可以在HTML中使用?
@Scripts.Render("~/js")
另外,我们可以根据加载页面加载JS文件吗?
答案 0 :(得分:2)
不在常规HTML页面中,因为常规HTML不会通过Razor处理引擎传递,@Scripts.Render()
是使用ASP.NET的Razor语法调用的C#方法({{1告诉Razor引擎将下一个片段解释为代码而不是标记)。
如果你这样做,它可能只是将文字@ Scripts.Render("〜/ js")直接输出到屏幕上。
答案 1 :(得分:0)
如果您想按需通过JavaScript动态加载捆绑软件,则以下代码可能会为您提供帮助。
<script>
(function (w, d) {
this.load = function (p, c) {
if (typeof p == 'string' && (p = [].push(p)), Object.prototype.toString.call(p) === '[object Array]') {
for (var i in p) {
var s = d.createElement('script'); s.type = 'text/javascript'; s.src = p[i]; s.async = false;
var h = d.getElementsByTagName('head'); if (h[0]) { h[0].appendChild(s); }
} c && (s.onreadystagechange = c, s.onload = c);
}
}
return this;
}(window, document));
var appjs='@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/scripts/app")';
load('s', ['https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js', 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js', 'https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.min.js'], function () {
load('s', [appjs']);
});
</script>