私はプログラムでスタイルシートをヘッドセクションに追加したいのですが、私が見た例の 1 つでは、多くのスタイルシートが必要な場合でも、1 つのスタイルシートを追加するだけでも多くのコード行が必要であるように思われました。
コード例:
HtmlLink css = new HtmlLink();
css.Href = "css/fancyforms.css";
css.Attributes["rel"] = "stylesheet";
css.Attributes["type"] = "text/css";
css.Attributes["media"] = "all";
Page.Header.Controls.Add(css);
メソッドも使用しましたPage.Header.RenderControl()
が、これも機能しませんでした。オブジェクト null の何かエラーがスローされました。
私もPage.Header.InnerHtml
などを使用しましたInnerText += "<link .... "/>
が、リテラル エラーが発生し、これはよくあるエラーだと思います。
私はこのコードを使用しました:
List<Literal> cssFiles = new List<Literal>();
cssFiles.Add(new Literal() { Text = @"<link href=""" + ResolveUrl("~/Resources/Styles/MainMaster/MainDesign.css") + @""" type=""text/css"" rel=""stylesheet"" />" });
cssFiles.Add(new Literal() { Text = @"<link href=""" + ResolveUrl("~/Resources/Styles/MainMaster/MainLayout.css") + @""" type=""text/css"" rel=""stylesheet"" />" });
AddStyleRange(cssFiles);
private void AddStyleRange(List<Literal> cssFiles)
{
foreach (Literal item in cssFiles)
{
this.Header.Controls.Add(item);
}
}
最初は動作しましたが、ページを変更すると動作しなくなりました。
私はマスター ページを使用しており、これらのコードをファイルに記述しています。また、代わりにMaster.cs
を使用することを推奨する人もいますが、ビルドすると、このように宣言することはできないというエラーがスローされます。this.Header
Page.Header
多くのスタイルを追加するのはそれほど難しいことではないはずです。
複雑になってきています。
ベストアンサー1
さて、私が現在使用している解決策は次のとおりです。
ヘルパークラスを作成しました:
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BusinessLogic.Helper
{
public class CssAdder
{
public static void AddCss(string path, Page page)
{
Literal cssFile = new Literal() { Text = @"<link href=""" + page.ResolveUrl(path) + @""" type=""text/css"" rel=""stylesheet"" />" };
page.Header.Controls.Add(cssFile);
}
}
}
そして、このヘルパー クラスを通じて、私がしなければならないことは次のことだけです。
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainDesign.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/MainMaster/MainLayout.css", this.Page);
CssAdder.AddCss("~/Resources/Styles/Controls/RightMainMenu.css", this.Page);
//...
したがって、1 行の簡単なコードで、必要なだけ追加できます。
また、マスターページとコンテンツ ページの関係でも機能します。
それが役に立てば幸い。
追伸:このソリューションと他のソリューションのパフォーマンスの違いはわかりませんが、よりエレガントで使いやすいように見えます。