0

マスター ページの div スタイル (表示) を子ページから変更したい。

私が使う :

    protected void ShowMsgText(int MsgID)
    {
        HtmlGenericControl MsgInner;
        MsgInner =((HtmlGenericControl)Master.FindControl("MsgInner"));
        MsgInner.Attributes["class"] = "MsgInnerShow";
    }

MsgInner は私の div id ですが、これを実行した後の変更はありません。

4

2 に答える 2

4

私は問題を調査しました。子ページ(aspx)に更新パネルがあり、マスターページにメッセージdivがあると思います。更新パネルは、その下にあるコントロールを更新できますが、更新パネルの外側にあるコントロールを更新できませんでした。したがって、更新パネルをマスターページに配置する必要があります。

マスターページ

<ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>              
                <div><strong>Demo for master page updation</strong></div>
                <div  id="divMaster" runat="server">
                    I am div in master page, going to change with ajax call
                </div>            

                <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>
            </ContentTemplate>
</asp:UpdatePanel>    

コンテンツページ(.aspx)

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

コンテンツページのコードビハインド(.aspx.cs)

protected void Button1_Click(object sender, EventArgs e)
{
      System.Threading.Thread.Sleep(2000); //To check the effect of ajax call, must be removed
      HtmlGenericControl divMaster = (HtmlGenericControl) this.Master.FindControl("divMaster");
      divMaster.InnerHtml = "hello I am being change from child page";
}
于 2012-09-19T16:43:10.250 に答える
2

マスターページでパブリックプロパティを定義する

MyMasterPage.Master.cs

private string _divClass = "DefaultClass";
public string DivClass
{
    get
    {
        return _divClass;
    }
    set
    {
        _divClass = value;
    }
}

このプロパティをマスターページのdivのHTMLマークアップに追加します。

MyMasterPage.Master:

<div id="MyDiv" runat="server" class="<%=DivClass %>">

この値は、子ページのOnInitまたはOnLoadイベントに設定できます。

ChildPage.aspx.cs

protected override void OnInit(EventArgs e)
    {
        var master = Page.Master as MyMasterPage;
        if (master != null)
        {
            master.DivClass = "MyOtherClassName";
        }
        base.OnInit(e);
    }
于 2012-09-19T17:31:55.913 に答える