ある特定のページのときだけhead内にlinkタグを追加したいと思い調べました。
この方法ならマスターページには本当に共通なものだけを書いて、コンテンツページ側で必要なときに追加することができます。
metaタグを追加
protected void Page_Init(object sender, EventArgs e) { HtmlMeta meta = new HtmlMeta(); meta.Attributes.Add("name", "keywords"); meta.Attributes.Add("content", "ASP.NET,C#"); Page.Header.Controls.Add(meta); }
linkタグを追加
protected void Page_Init(object sender, EventArgs e) { HtmlLink link = new HtmlLink(); link.Href = "//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.0/themes/redmond/jquery-ui.css"; link.Attributes.Add("rel", "stylesheet"); link.Attributes.Add("type", "text/css"); link.Attributes.Add("media", "all"); Page.Header.Controls.Add(link); }
scriptタグを追加
protected void Page_Init(object sender, EventArgs e) { HtmlGenericControl script = new HtmlGenericControl("script"); script.Attributes.Add("src", "//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"); script.Attributes.Add("type", "text/javascript"); Page.Header.Controls.Add(script); }
titleタグを変更
titleタグはhead内に記述しておいて、タイトルを変更したらいいです。
protected void Page_Init(object sender, EventArgs e) { Page.Header.Title = "動的タイトル"; }
ScriptManagerにアクセスする
ScriptManagerをマスターページで使用しているとコンテンツページで使用できませんが、ScriptManagerのかわりにScriptManagerProxyを使用することができます。
<asp:ScriptManagerProxy ID="smp" runat="server"> <Scripts> <asp:ScriptReference Path="~/Scripts/myscript.js"/> </Scripts> </asp:ScriptManagerProxy>
コメント