将母版页标题中的文本框值访问到.aspx.vb页面

时间:2012-02-29 15:26:48

标签: asp.net master-pages

我在母版页中包含的标题(用户控件)中创建了一个文本框和一个提交按钮

我想在.aspx.vb页面中点击提交后使用该文本框值。

我如何访问它,因为首先加载vb页面然后加载主页面?

2 个答案:

答案 0 :(得分:0)

  • 从UserControl到Page / MasterPage的最佳通信方式是使用事件
  • 从MasterPage到Page进行通信的最佳方式是使用事件

通过这种方式,您不会将UserControls与其Pages / MasterPages以及具有Master的Master页面硬链接。

向用户单击按钮时引发的UserControl添加事件,例如:

MyControl类型的UserControl中:

public delegate void SubmittedHandler(MyControl ctrl);
public event SubmittedHandler Submitted;

protected void BtnCLick(object sender, EventArgs e) {
    Submitted(this);
}

然后在MasterPage中为此事件添加处理程序,处理它并再次引发Master事件:

在Master的代码隐藏中:

public delegate void MyControlSubmittedHandler(MyControl ctrl);
public event MyControlSubmittedHandler ControlSubmitted;

protected void Page_Init(Object sender, EventArgs e) {
    this.MyControl1.Submitted += MyControlSubmitted;
}

protected void MyControlSubmitted(MyControl sender) {
    ControlSubmitted(sender);
}

然后将此事件的处理程序添加到您的页面:

在你的页面中:

protected void Page_Init(object sender, EventArgs e) {
    ((SiteMaster)Master).ControlSubmitted += MasterControlSubmitted;
}

protected void MasterControlSubmitted(MyControl sender){
    // do whatever you need to do
}

如果您只需要从页面访问TextBox并且您不需要处理点击事件,您还可以使用属性来实现此目的:

  • 添加公共财产f.e.获取/设置MyControlText属性
  • UserControl中的TextBox.Text
  • 添加公共财产f.e. MyControlTextMaster获取/设置UserControl的MyControlText属性
  • 现在您可以通过以下方式从您的页面获取/设置此属性: ((SiteMaster)Master).MyControlText = "Hello World";

答案 1 :(得分:0)

  

TextBox Val =(TextBox)this.Master.FindControl(“TextBoxID”);