Site.Master(マスターページ)を動的に変更する方法

ASP.NET
By: Rose Braverman

ある特定のページのときだけ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>

 

 

コメント

タイトルとURLをコピーしました