是否可以从ASPX文件的代码中调用Scripts.Render或Styles.Render?

Ale*_*zzo 19 c# asp.net bundling-and-minification

有没有办法@:Scripts/Styles.Render从代码后面复制助手的行为?

如果我使用该BundleTable.Bundles.ResolveBundleUrl方法引用捆绑包,则即使使用捆绑和缩小也会发生debug=true.我已经阅读了其他问题,通过使用前面提到的帮助程序,解决方案似乎非常明显.但在我的情况下,我在aspx中不知道bundle的名称,它是在运行时在后面的代码中生成的.

所以,我需要在后面的代码中添加引用,我找不到办法.

有办法吗?或者我将被迫在.aspx文件中执行此操作?

not*_*ary 26

是的!

这就是我为Web窗体所做的.此示例将资源,<head>而且还与其中任何控制工程Controls.Add()工作

对于CSS:

System.Web.UI.WebControls.Literal lit = new System.Web.UI.WebControls.Literal();
lit.Text = System.Web.Optimization.Styles.Render("~/bundles/my_css").ToHtmlString();
Header.Controls.Add(lit);
Run Code Online (Sandbox Code Playgroud)

对于JS:

System.Web.UI.WebControls.Literal lit = new System.Web.UI.WebControls.Literal();
lit.Text = System.Web.Optimization.Scripts.Render("~/bundles/my_js").ToHtmlString();
Header.Controls.Add(lit);
Run Code Online (Sandbox Code Playgroud)

另外 - 由于ASPX是代码隐藏的子类,理论上你可以通过在代码隐藏中使它成为受保护(或公共)变量来从ASPX获取包名称(但是你没有发布所有代码所以我不知道是什么你完全正确).


小智 6

您也可以只是内联渲染脚本

<%: Scripts.Render("~/bundles/my_js") %>
Run Code Online (Sandbox Code Playgroud)

  • OP特别希望它是通过代码隐藏完成的. (3认同)