在html中使用Bundleconfig

时间:2017-01-27 10:52:20

标签: c# asp.net asp.net-mvc razor

我们可以在HTML页面中使用以下捆绑包而不是CSHTML。 Bundle config是否可以在HTML中使用?

@Scripts.Render("~/js")

另外,我们可以根据加载页面加载JS文件吗?

2 个答案:

答案 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>