将值从页面传递到用户控件

时间:2011-11-14 04:54:07

标签: c# asp.net user-controls

我在主页面的两个标签中存储名称和姓氏。我在类中也有这些值(类没有做太多但是我将它们用于将来的扩展)。我有一个用户控件,它将发送一个名称和姓氏为正文的电子邮件。

我的问题是如何将标签或类变量值传输到用户控件的主体变量?

5 个答案:

答案 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