是否可以从ASPX文件的代码隐藏中调用Scripts.Render或Styles.Render
本文关键字:Render 调用 Scripts 隐藏 Styles 代码 ASPX 文件 是否 | 更新日期: 2023-09-27 17:55:31
有没有办法从代码隐藏中复制@:Scripts/Styles.Render
助手的行为?
如果我使用 BundleTable.Bundles.ResolveBundleUrl
方法引用捆绑包,则即使使用 debug=true
也会发生捆绑和缩小。我已经阅读了其他问题,通过使用前面提到的帮助程序,解决方案似乎很明显。但就我而言,我在 aspx 中不知道捆绑包的名称,它是在运行时在代码隐藏中生成的。
所以,我需要从后面的代码中添加头部的引用,但我找不到一种方法来做到这一点。
有办法吗?还是我会被迫在.aspx文件中执行此操作?
是的!
这就是我为 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);
对于 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);
另外 - 由于 ASPX 是代码隐藏的子类,理论上您可以通过在代码隐藏中使其成为受保护的(或公共)变量来从 ASPX 获取捆绑名称(但您没有发布所有代码,所以我不确定您到底在做什么)。
您也可以以内联方式呈现脚本
<%: Scripts.Render("~/bundles/my_js") %>
这对后来来到这里的人也有帮助。
不使用文本控件的备用选项:
ClientScript.RegisterStartupScript(typeof(Page), "MyJS", Scripts.Render("~/bundles/bundledJS").ToHtmlString(), false);