C# 如何更改母版页';从内容页删除标签而不刷新页面

C# 如何更改母版页';从内容页删除标签而不刷新页面,c#,asp.net,.net,updatepanel,C#,Asp.net,.net,Updatepanel,我有母版页和内容页。在内容页面上有一些标签,我想在单击内容页面上的按钮时更改它的文本,而不刷新页面 Default.aspx <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %> <script runat="server"> protected void ImageButton1_Click(object sender, ImageClickEventArgs e)

我有母版页和内容页。在内容页面上有一些标签,我想在单击内容页面上的按钮时更改它的文本,而不刷新页面

Default.aspx

 <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" %>

<script runat="server">

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Label SensorTemperatureLabel = (Label)this.Master.FindControl("SensorTemperatureLabel");

        if (SensorTemperatureLabel != null)
        {
            SensorTemperatureLabel.Text = "TEST";
        }
    }
</script>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
           <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" />

</asp:Content>

受保护的无效ImageButton1\u单击(对象发送者,ImageClickEventArgs e)
{
Label SensorTemperatureLabel=(Label)this.Master.FindControl(“SensorTemperatureLabel”);
if(传感器温度标签!=null)
{
传感器温度标签。Text=“测试”;
}
}
母版页。母版 带有标签的部分代码

<div class="sidebar">
        <!-- insert your sidebar items here -->
          <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <ContentTemplate>
                  <asp:Label ID="SensorTemperatureLabel" runat="server" Text="Label"></asp:Label>
              </ContentTemplate>
          </asp:UpdatePanel>
      </div>

如果标签不在
中,则可以使用javascript访问

 var SensorTemperatureLabel = document.getElementById("<%=SensorTemperatureLabel%>");
 SensorTemperatureLabel.innerHTML = "newValue";
var-SensorTemperatureLabel=document.getElementById(“”);
SensorTemperatureLabel.innerHTML=“newValue”;
否则,将生成ID,您需要

var SensorTemperatureLabel = document.getElementById("<%= this.Master.FindControl("SensorTemperatureLabel").ClientID %>");
var-SensorTemperatureLabel=document.getElementById(“”);

我为您准备了完整的解决方案,向您展示如何做到这一点

第一个样品母版。请注意,我已将ScriptManager添加到页面,目标标签位于内容模板内:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebTester.Site1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="SensorTemperatureLabel" runat="server" Text="TEMP"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebTester.WebForm1" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Test" />
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

此代码将更新母版页上的标签,而无需完整的页面回发。

我希望我的答案对这种情况有所帮助 如果母版页中有名为“Label1”的标签,则 您可以像这样更改其中的值 VB


祝大家平安。

是的,我现在也用这种方式解决了这个问题,但感谢您的回复,我已经忘记了内容站点的UpdatePanel。非常感谢:-)
protected void Button1_Click(object sender, EventArgs e)
{
    Site1 site = this.Master as Site1;
    if (site != null)
    {
        Label SensorTemperatureLabel = site.FindControl("SensorTemperatureLabel") as Label;
        SensorTemperatureLabel.Text = DateTime.Now.ToString();
    }
}
Dim lb as label= me.master.findcontrol("Label1"):lb.text="Hello worold"