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