有没有办法从代码背后复制@:Scripts/Styles.Render
帮助器的行为?
如果我使用BundleTable.Bundles.ResolveBundleUrl
方法引用捆绑包,那么即使使用debug=true
也会发生捆绑和缩小。我已经阅读了其他问题,通过使用前面提到的助手,解决方案似乎非常明显。但在我的例子中,我不知道在aspx中的包的名称,它是在运行时在后台代码中生成的。
因此,我需要在头部添加引用,从代码背后添加引用,但我找不到方法。
有什么办法吗?或者我将被强制在.aspx文件中执行此操作?
发布于 2013-01-29 07:02:30
是啊!
这就是我对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是codebehind的一个子类,理论上你可以通过在codebehind中将其设置为一个受保护的(或公共的)变量来从ASPX中获取包的名称(但你并没有发布所有的代码,所以我不确定你到底在做什么)。
发布于 2014-10-04 01:05:28
您也可以只以内联方式呈现脚本
<%: Scripts.Render("~/bundles/my_js") %>
发布于 2013-11-12 19:59:28
这也可能对后来来这里的人有所帮助。
不使用文本控件的备用选项:
ClientScript.RegisterStartupScript(typeof(Page), "MyJS", Scripts.Render("~/bundles/bundledJS").ToHtmlString(), false);
https://stackoverflow.com/questions/14462112
复制相似问题