19

@:Scripts/Styles.Renderコードビハインドからヘルパーの動作を複製する方法はありますか?

この方法を使用してバンドルを参照すると、。を使用してBundleTable.Bundles.ResolveBundleUrlもバンドルと縮小が発生しdebug=trueます。私は他の質問を読みましたが、前述のヘルパーを使用することで、解決策ははるかに明白に思えます。しかし、私の場合、aspxにある間はバンドルの名前がわかりません。これは、実行時にコードビハインドで生成されます。

そのため、コードの後ろから頭に参照を追加する必要がありますが、それを行う方法が見つかりません。

方法はありますか?または、.aspxファイルでそれを強制されますか?

4

3 に答える 3

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);

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からバンドル名を取得できます(ただし、すべてのコードを投稿しなかったため、何がわかりません)あなたは正確にあなた次第です)。

于 2013-01-28T23:02:29.747 に答える
6

スクリプトをインラインでレンダリングすることもできます

<%: Scripts.Render("~/bundles/my_js") %>
于 2014-10-03T17:05:27.533 に答える
4

これは、後でここに来た人にも役立つかもしれません。

リテラルコントロールを使用しない代替オプション:

  ClientScript.RegisterStartupScript(typeof(Page), "MyJS", Scripts.Render("~/bundles/bundledJS").ToHtmlString(), false);
于 2013-11-12T11:59:28.227 に答える