文本框值未在 asp.net c# 中访问
本文关键字:net 访问 asp 文本 | 更新日期: 2023-09-27 18:36:20
我在.aspx页面上有一个文本框。在此页面上有一个 用户控件 .在此用户控制中有一个 按钮 .我想要在按钮单击时获取文本框的值,该值不在用户控件内。我该怎么做
请帮助我.
在
用户控件的按钮单击事件中写下此行
protected void Button_Click(sender obj,EventArgs arg)
{
TextBox txtbox= (((MyPage)parent).FindControl("TextBoxid") as TextBox);
if(txtbox!=null)
(((MyPage)this.Page).FindControl("TextBoxid") as TextBox).Text;
//or
//(((MyPage)this.Parent).FindControl("TextBoxid") as TextBox).Text;
}
或
替代方法是在页面中创建属性并在用户控件中访问它
public string txtValue
{
get
{
return TextboxID.Text;
}
}
用户控件的按钮单击事件
protected void Button_Click(sender obj,EventArgs arg)
{
string txtvalue = ((Mypage)this.Page).txtValue;
//or
//((MyPage)this.Parent).txtValue;
}
protected void MyButton_Click(object sender, EventArgs e)
{
string TextBoxValue;
TextBoxValue = MyTextBox.Text;
}
这是你想要的吗?
尝试使用以下方法,
((TextBox)USerControl.Parent.FindControl("txtbox")).Text
((TextBox)USerControl.Page.FindControl("txtbox")).Text
或
((YourPageType)USerControl.Page).TextBox.Text
考虑到解耦,我建议,如果您的用户控件需要访问它外部的信息,则应传入该信息,反之亦然。控件不应该负责信息的来源,它只知道有信息。考虑到这一点,我建议冒泡活动以获取所需的信息。
事件冒泡
这将涉及创建一个新委托,然后在单击Button
后触发它,从而冒泡事件并允许我们返回所需的值,在本例中为文本框值。
步骤 1:声明委托
// declare a delegate
public delegate string MyEventHandler(object sender, EventArgs e);
步骤 2:更新用户控件
// update the user control
public class MyUserControl : UserControl
{
// add the delegate property to your user control
public event MyEventHandler OnSomeButtonPressed;
// trigger the event when the button is pressed
protected void MyButton_Click(object sender, EventArgs e)
{
string someString = string.Empty;
if (this.OnSomeButtonPressed != null)
{
someString = this.OnSomeButtonPressed(this, e);
}
// do something with the string
}
}
第 3 步:更新页面
// be sure to register the event in the page!
public class MyPage : Page
{
protected override void OnLoad(object sender, EventArgs e)
{
base.OnLoad(sender, e);
myUserControl.OnSomeButtonPressed += this.HandleUserControl_ButtonClick;
}
public string HandleUserControl_ButtonClick(object sender, EventArgs e)
{
return this.SomeTextBox.Text;
}
}