如何从asp.net中的母版页访问内容页控件

如何从asp.net中的母版页访问内容页控件,asp.net,Asp.net,从内容页访问母版页控件非常容易,如 protected void Page_Load(object sender, EventArgs e) { // content page load event DropDownList thisDropDown = this.Master.FindControl("someDropDown") as DropDownList; userLabel.Text = thisDropDown.SelectedValue; } 但我如何从

从内容页访问母版页控件非常容易,如

protected void Page_Load(object sender, EventArgs e)
{
    // content page load event
    DropDownList thisDropDown = this.Master.FindControl("someDropDown") as DropDownList;
    userLabel.Text = thisDropDown.SelectedValue;
}

但我如何从母版页访问内容页的控件呢。假设内容页中有一个文本框,母版页中有一个按钮。我希望当我点击母版页按钮时,我希望在母版页标签的内容页中显示文本框的文本。如何实现它。请帮助我的代码样本。谢谢。

在母版页按钮单击事件中,应通过以下方式访问页面内容:-

protected void Button1_Click(object sender, EventArgs e)
{
    TextBox TextBox1 = (TextBox)ContentPlaceHolder1.FindControl("TextBox1");
    if (TextBox1 != null)
    {
        Label1.Text = TextBox1.Text;
    }
}

已经有一段时间了,但我相信您可以使用ContentPlaceHolder作为参考:

Control control = this.myContentPlaceHolder.FindControl("ContentPageControlID");

例如,在我看来,使用母版页中的事件提升并在contenet页面中捕获此事件来更改此页面上的某些contenet会更好。其主要优点是可重用性。将来,您可能希望从母版页更改其他内容页上的内容,在这种情况下,您应该只将事件处理程序添加到此内容页,而不更改母版页上的代码。在这种方法中,您不需要从某些内容页硬编码控件名称。此外,您根本不应该为某些内容的控件添加依赖项


例如,您可以找到一个实现示例

您应该从母版页中查找contentplaceholder,然后在母版页的子级中查找contentplaceholder

this.Page.Master.FindControl("ContentPlaceHolder1").FindControl("controlAFromPage");

您可以使用以下命令找到控件:

ContentPlaceHolder contentPage = Page.MasterPage.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
Label lblHead =(Label)contentPage.FindControl("lblHeading");
Response.Write(lblHead.Text);
资料来源:

试试这段代码

Page.Master.FindControl("MainContent").FindControl("DivContainer_MyProfile").Visible = True
现场C#代码。主代码:

<div>
  <asp:ContentPlaceHolder ID="MainContent" runat="server">
  </asp:ContentPlaceHolder>
</div>

这是一个如何从Site.Master.cs引用Default.aspx上的客户端控件的示例

!还有这条漫长的寻找之路!!如此愚蠢以至于需要这么多代码。。。我不是把这归因于你的回答,而是因为ASP.net模式破坏了聚会;不确定“彻底的”注释是针对“错误处理”还是什么,但在这种情况下,我建议您实际上不要检查
FindControl
的结果。如果您没有做任何花哨的事情,那么很可能您更希望得到一个异常来发出错误信号,而不是默默地什么都不做。更好的方法是:使用断言,不要签入生产代码。如果您仍然设法在缺少预期控件的情况下发布项目,则更愿意将用户重定向到友好的错误页面,并修复您的发布过程。欢迎使用Stack Overflow!我推荐你。在给出答案时,最好解释一下为什么你的答案是正确的。欢迎使用堆栈溢出!请注意,您正在回答一个非常古老且已回答的问题。这是一本关于旅游的指南。
public partial class SiteMaster : MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {          
        ToolkitScriptManager1.RegisterPostBackControl(this.MainContent.FindControl("btnOnDefaultPage"));            
    }
}