C# 仅在一个内容页中更改母版页中的标签

C# 仅在一个内容页中更改母版页中的标签,c#,asp.net,label,master-pages,C#,Asp.net,Label,Master Pages,如何从一个控制页内部定义母版页中的标签,而不在导航到另一个控制页时丢失标签?我知道我可以使用此代码,它可以工作: (Master.FindControl("myControl") as Label).Text = "someNewContent"; 但是我必须在每个页面上定义它,以保持标签中的内容相同。是否有一种更简单/更简短的方法在整个程序中只定义一次这段代码?提前谢谢。我想我明白你所问的要点了: 首先,我会使用@MasterType指令在@page指令下方的内容页中强烈键入

如何从一个控制页内部定义母版页中的标签,而不在导航到另一个控制页时丢失标签?我知道我可以使用此代码,它可以工作:

        (Master.FindControl("myControl") as Label).Text = "someNewContent";

但是我必须在每个页面上定义它,以保持标签中的内容相同。是否有一种更简单/更简短的方法在整个程序中只定义一次这段代码?提前谢谢。

我想我明白你所问的要点了:

首先,我会使用@MasterType指令在@page指令下方的内容页中强烈键入母版页:

<%@ MasterType TypeName="*fully qualified type of your master page*" %>
在内容页中(例如,在页面初始化期间),您可以添加:

this.Master.MyText = "Whatever you want to say!";
然后在Page_load事件中加载母版页控件文本属性:

protected void Page_Load(object sender, EventArgs e)
{
  this.myControl.Text = Convert.ToString(this.ViewState["TheText"]);
}
这不会在内容页之间持续存在,因为每个内容页都实例化母版页的一个新实例。在这种情况下,将您想要保留的文本放入会话中,然后在mater pages Page_Load事件中读取它


希望这能回答您的问题。

是什么阻止您将其设置在主机中
this.myControl.Text=“someNewContent”
protected void Page_Load(object sender, EventArgs e)
{
  this.myControl.Text = Convert.ToString(this.ViewState["TheText"]);
}