Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否更改母版页上链接按钮上的文本?_C#_Asp.net_Master Pages - Fatal编程技术网

C# 是否更改母版页上链接按钮上的文本?

C# 是否更改母版页上链接按钮上的文本?,c#,asp.net,master-pages,C#,Asp.net,Master Pages,当用户单击内容页上的按钮并且结果操作满足某些条件时,我希望更改母版页上链接按钮上的文本。 这可以吗?我似乎无法通过intellisense访问母版页控件,我认为这是有道理的,但有办法解决吗 再次感谢您必须使用FindControl方法在母版页中查找控件,如 (ControlType)Master.FindControl("controlID") ((LinkButton)Master.FindControl("LinkButtonID")).Text = "New Text"; 使用主关键

当用户单击内容页上的按钮并且结果操作满足某些条件时,我希望更改母版页上链接按钮上的文本。 这可以吗?我似乎无法通过intellisense访问母版页控件,我认为这是有道理的,但有办法解决吗


再次感谢

您必须使用
FindControl
方法在母版页中查找控件,如

(ControlType)Master.FindControl("controlID")


((LinkButton)Master.FindControl("LinkButtonID")).Text = "New Text";

使用主关键字。因此Master.control将访问母版页上的控件。

在母版页的代码后面添加一个属性,如下所示:

public LinkButton LButton
{
    get { return lButton; }
    set { lButton = value; }
}
在.aspx页面顶部,将此指令与虚拟路径一起添加到母版页:

<%@ MasterType VirtualPath="~/Master.master" %>
编辑:如果希望文本在其他页面上保持不变:
当满足特定条件时,可以改为设置会话变量:

Session.Add("Link Button Text", "foobar");
在母版页的页面加载中:

if(Session["Link Button Text"] != null)
{
   lButton.Text = Session["Link Button Text"].ToString(); 
} 

为给出的解决方案提供另一种选择,您也可以考虑给主接口:

public interface IMaster
{
   string LinkButtonText { get; set; }
}
将此接口应用于主机的代码隐藏。然后在页面中执行以下操作:

((IMaster)Page.Master).LinkButtonText = "XYZ";
另外,如果您有一个自定义的基页类,那么您可以对Master属性进行阴影处理并返回这个接口,这样您就可以直接引用它


HTH.

您还可以将母版转换为母版页类名,然后通过它访问控件。。。((SiteMaster)Master).linkButton1.Text=“新文本”;刚刚尝试过,没有获得intellisense中的控件,而是获得((SiteMaster)Master)。在我的评论中,铸造母版页只会打开该母版页上的公共属性。如上所述,((SiteMaster)Master)。linkButton1.Text=“New Text”;但是在第一次之后,“我没有得到任何控件列表。我想你是指MasterType指令?在我的母版页上,我有“”。母版页的代码具有属性“publicstringlbutton{set{lbtn.Text=value;}}”。在我的aspx页面上,我有一个指向母版页的虚拟路径的指令,在页面加载中,我有“master.LButton=“bar”;”。这会将LinkButton的文本更改为“bar”。这非常快就完成了,我想补充一点,这不是我最终会做的事情。我会为LinkButton提供一个属性,它有一个getter和setter,并且工作得非常好。我只是匆匆忙忙做的。@DarkWinter没问题。只是为了以防万一,在回答中详细阐述了核心问题。当满足某些条件时,您可以改为设置一个会话变量:“session.Add”(“Link Button Text”,“foobar”);”在母版页的页面加载中,'if(Session[“Link Button Text”]!=null){lButton.Text=Session[“Link Button Text”].ToString();}@DarkWinter,我看到了你的其他评论。我只是在尝试不同的方式,并决定我最喜欢哪一种。对不起,耽误了这么长时间。
((IMaster)Page.Master).LinkButtonText = "XYZ";