2009-11-19 59 views

回答

0

我不完全确定你想要完成什么,但它听起来像想要从内容页面访问母版页中包含的用户控件的属性。

您可以在您的母版页中使用暴露用户控件的文本属性的公共属性。

public string ShoppingCartText { 
    get { return ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text; } 
    set { ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text = value; } 
} 

然后从您的内容页面,您可以设置文本框的值。您可以通过Page.Master属性从内容页面访问母版页的属性。

Master.ShoppingCartText = "value" 
0

我所做的是通过后台代码中的公共函数访问母版页控件。因此,在后面的代码母版页

,我将宣布类似:

public string getTextBoxValue() 
{ 
    return TextBox.Text; 
} 
+0

它不是主页面控件。它在子页面上,我想从母版页上的og usercontrol后面的代码访问它。 – 2009-11-19 16:54:29

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 
相关问题