在非主控页中访问母版页控件?

3
在ASP.NET中,我如何在非母版页中访问母版页控件?

你正在渲染的视图是否使用了包含控件的母版页? - Brian
3个回答

5

您可以在当前页面上将Masterpage作为属性访问。但是,主页上的控件是受保护的,因此无法直接访问它们。但是,您可以使用FindControl(string name)来访问它们。您需要使用的代码取决于控件是否在内容占位符内部或外部。

// Gets a reference to a TextBox control inside a ContentPlaceHolder
ContentPlaceHolder mpContentPlaceHolder;
TextBox mpTextBox;
mpContentPlaceHolder = 
    (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(mpContentPlaceHolder != null)
{
    mpTextBox = (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
    if(mpTextBox != null)
    {
        mpTextBox.Text = "TextBox found!";
    }
}

// Gets a reference to a Label control that is not in a 
// ContentPlaceHolder control
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
    Label1.Text = "Master page label = " + mpLabel.Text;
}

2

在您的网页中添加以下内容,以便访问主页面的内容:主页面:以编程方式访问

<%@ MasterType virtualpath="Your MasterPath" %>

你可以这样做(另一种方式)
MasterPage mstr 
Label lbl
mstr = Page.Master
If (mstr.ID == "yourMasterIDString")
{
     lbl = mstr.FindControl("lblBar")
        If (lbl !=null)
          {
                lbl.Text = "Do some Logic"
          }
}

2

您可以使用

TextBox txt1 = (TextBox)this.Master.FindControl("MytxtBox");
txt1.Text="Content Changed from content page";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接