是否可以从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文件中执行此操作?

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

是的!

这就是我为 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);