将用户控件中的单个值传递给C Sharp中包含页面代码的代码

时间:2011-08-12 15:06:15

标签: c# asp.net user-controls

我需要将用户控件的onload事件中的值传递给父页面的onload事件。我在stackoverflow上找到了这个代码,但我似乎无法让它工作/适应它:

Public Property SomeValue() As String
Get
    Return textbox1.Text
End Get
End Property

我需要传递的值是来自数据库的单个int。

 conn.Open();
 reader = comm.ExecuteReader();
 if (reader.Read())
 {
     shoppingCartHeadID = Convert.ToInt32(reader["shoppingCartHeadID"]);
     hfShoppingCartHeadID.Value = shoppingCartHeadID.ToString();
 }
 reader.Close();

4 个答案:

答案 0 :(得分:1)

你真的不需要传递任何东西。只需在用户控件上创建一个属性,然后从页面访问它:

protected void Page_Load(object sender, EventArgs e)
{
    string userControlValue = UserControl.UserControlValue;
}

答案 1 :(得分:0)

此代码:

Public Property SomeValue() As String
Get
Return textbox1.Text
End Get
End Property 

在C#中看起来像这样:

public String SomeValue {
 get{ return textbox1.text}
}

我认为通过子用户控件应该设置属性的方式,父用户控件应该读取什么。

//child
public string DatatoShare{get;set;}
protected override Onload()
{
DatatoShare = "Whatever you want"
base.Onload()
}

//parent
private ChildUserControl child;
public string NeedChildsData()
{
return child.DatatoShare
}

答案 2 :(得分:0)

这不是很好的方式,但如果你真的知道你在那里做什么,你可以尝试一下属性

可能是这样的:

//child uc class
...
public string MyValue { get; private set; }

//... loaded (...)
{
    ...
    this.MyValue = "Value";
}

// Parent uc class
//... loaded (...)
{
    ...
    string childValue = this.ucChildControl.MyValue;
}

答案 3 :(得分:0)

最后,我选择创建一个单独的公共类来调用和控制购物车。事实证明,这是更有效和更清晰的代码!

感谢您的建议。