我在主页面的两个标签中存储名称和姓氏。我在类中也有这些值(类没有做太多但是我将它们用于将来的扩展)。我有一个用户控件,它将发送一个名称和姓氏为正文的电子邮件。
我的问题是如何将标签或类变量值传输到用户控件的主体变量?
答案 0 :(得分:29)
使用您要传递给它的数据的数据类型在用户控件上创建一个属性,并在创建控件时在页面中填充它。
public class myUserControl : Control
{
...
public int myIntProperty {get; set;}
...
}
稍后在后面的代码中你可以分配像
这样的值myUserControl cntrl = new myUserControl();
cntrl.myIntProperty = 5;
除此之外,你可以通过Markup传递值,就像
一样<uc1:myUserControl ID="uc1" runat="server" myIntProperty="5" />
答案 1 :(得分:2)
您需要在控件上创建属性以保存这些值;然后从页面代码中,只需将值分配给控件中的属性。
在你的控制中,你可以拥有类似
的东西public string FirstName
{
get {
if (ViewState["FirstName"] == null)
return string.Empty;
return ViewState["FirstName"].ToString();
}
set {
ViewState["FirstName"] = value;
}
}
答案 2 :(得分:1)
第1步: 您可以将值作为属性公开,并且可以轻松地使用它。
第2步:要从用户控件访问您的页面,您可以使用Parent
属性,也可以通过某些客户登录来访问父页面,而不是编写代码来使用财产价值。
答案 3 :(得分:1)
您需要在控件上定义公共属性,然后在页面上使用控件时,可以将值传递给这些参数。
类似的东西:
<cc:mycustomControl runat="server"
MyProperty1=<%# label1 %>
MyProperty2=<%# label2 %>
/>
答案 4 :(得分:0)
您可以在用户控件中执行类似的操作
string x=((yourparentcontrol)this.parent).label1.text;
并使用字符串x
。