我有称为购物车的用户控件。 我在母版页中使用过。 我想从子页面获取文本框值到用户控件。 是否可以从母版页上的“自定义用户控件”中的子页面访问控件?
答案 0 :(得分:0)
我不完全确定你想要完成什么,但听起来想要从内容页面访问母版页中包含的用户控件的属性。
您可以在母版页中使用公共属性来公开用户控件的text属性。
public string ShoppingCartText {
get { return ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text; }
set { ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text = value; }
}
然后,您可以在内容页面中设置文本框的值。您可以通过Page.Master属性从内容页面访问母版页的属性。
Master.ShoppingCartText = "value"
答案 1 :(得分:0)
我所做的是通过后面代码中的公共函数访问母版页控件。
因此,在母版页的代码中,我会声明如下:
public string getTextBoxValue()
{
return TextBox.Text;
}
答案 2 :(得分:0)
您可以通过控制树递归来查找页面中的任何控件。
以下是一些扩展方法,在解决方案的类文件中弹出此代码。
public static class ControlExtensions
{
public static IEnumerable<Control> FindAllControls(this Control control)
{
yield return control;
foreach (Control child in control.Controls)
foreach (Control all in child.FindAllControls())
yield return all;
}
public static Control FindControlRecursive(this Control control, string id)
{
var controls = from c in control.FindAllControls()
where c.ID == id
select c;
if (controls.Count() == 1)
return controls.First();
return null;
}
}
然后在您的用户控件中使用。
TextBox whatYoureLookingFor = this.FindControlRecursive("theId") as TextBox;
if(null != whatYoureLookingFor)
// whatever