C# 使用ajax技术将数据从contentpage发布到母版页

C# 使用ajax技术将数据从contentpage发布到母版页,c#,asp.net,ajax,updatepanel,master-pages,C#,Asp.net,Ajax,Updatepanel,Master Pages,我正在开发基于ASP.Net和C的web应用程序。 当我单击内容页中的按钮时,我想将数据(字符串)传递到母版页并将其显示给用户。我知道技术和代码,但问题在于Ajax。 由于内容页中的按钮位于Updatepanel内,所以当我单击该按钮时,消息将不会显示在母版页中。因为只有页面的一部分是refresh,我不知道如何refesh母版页 contentpage中的代码: <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHo

我正在开发基于ASP.Net和C的web应用程序。 当我单击内容页中的按钮时,我想将数据(字符串)传递到母版页并将其显示给用户。我知道技术和代码,但问题在于Ajax。 由于内容页中的按钮位于Updatepanel内,所以当我单击该按钮时,消息将不会显示在母版页中。因为只有页面的一部分是refresh,我不知道如何refesh母版页

contentpage中的代码:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder_Body_Member" ...>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
                    <asp:TextBox ... ></asp:TextBox>
                    <asp:Button ID="ShowText" ... />
    </ContentTemplate>
    </asp:UpdatePanel>

母版页内的代码(实际上这是一个嵌套母版页):

。。。
... 

按钮位于“ContentPlaceHolder\u Body\u Member”的内部,标签位于“ContentPlaceHolder\u Footer”的内部。要获得所需的结果,只需对母版页设计进行一些更改,如下代码所示:

在母版页上,首先将内容占位符放在更新面板内:

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>
         <asp:Label ID="DataFromPage" runat="server" Text="Label"></asp:Label>
         <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder>
     </ContentTemplate>
 </asp:UpdatePanel>
结果如下:

更新1

好的,记住如果你有一个嵌套的更新面板,那么你在其中找到控件的方式会有点不同。如果你需要在其他内容页上进行更改,你需要强制更新面板在你的代码中进行更改,所以你的代码应该是这样的:

//按钮控件的事件需要同时找到更新面板和标签:

    protected void Button1_Click(object sender, EventArgs e)
    {
        UpdatePanel myUpdatePanel = Page.Master.Master.FindControl("ContentPlaceHolder_Footer").FindControl("UpdatePanel") as UpdatePanel;
        Label myLabel = Page.Master.Master.FindControl("ContentPlaceHolder_Footer").FindControl("DataFromPage") as Label;
        myLabel.Text = "this is a message from my content page";
        myUpdatePanel.Update(); //force the panel to get updated
    }

干杯

谢谢您的回复。问题是,它们位于不同的内容占位符中。contentPage中的按钮位于“ContentPlaceHolder\u Body”的内部,而masterPage中的标签位于“ContentPlaceHolder\u Footer”的内部。您是否也可以发布母版页和内部内容页?当然,我刚刚编辑了我的文章。请看一看。
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </ContentTemplate>
  </asp:UpdatePanel>
</asp:Content>
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label myLabel = Page.Master.FindControl("UpdatePanel1").FindControl("DataFromPage") as Label;
        myLabel.Text = "this is a message from my content page";
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        UpdatePanel myUpdatePanel = Page.Master.Master.FindControl("ContentPlaceHolder_Footer").FindControl("UpdatePanel") as UpdatePanel;
        Label myLabel = Page.Master.Master.FindControl("ContentPlaceHolder_Footer").FindControl("DataFromPage") as Label;
        myLabel.Text = "this is a message from my content page";
        myUpdatePanel.Update(); //force the panel to get updated
    }