2011-11-14 32 views
5

我在主页中的两个标签中存储名称和姓氏。我在课堂上也有这些价值(班级不怎么做,但我将它们用于未来的扩展)。我有一个用户控件,它将发送名称和姓氏为正文的电子邮件。从页面到用户控件传递值

我的问题是,如何将标签或类变量值转换为用户控件的主体变量?

+0

在该环境中用户控件产生的? –

+0

对不起,我是ASP.NET和C#的新手 环境中你究竟意味着什么? –

+0

这意味着usercontrol是否属于ajax? –

回答

25

与希望传递给它的数据的数据类型用户控件创建一个属性,并填充它在你的页面上创建控件。

public class myUserControl : Control 
    { 
     ... 
     public int myIntProperty {get; set;} 
     ... 
    } 

后来这后面的代码中,你可以指定喜欢

myUserControl cntrl = new myUserControl(); 
    cntrl.myIntProperty = 5; 

取而代之的是价值,你可以通过标记传递值也很喜欢

<uc1:myUserControl ID="uc1" runat="server" myIntProperty="5" /> 
+0

谢谢...没有错误和工作正常 真的很感激 –

2

您需要在控件上创建属性以保存这些值;然后从页面代码中,只需将值分配给控件中的属性即可。

在你的控制,你可以像

public string FirstName 
{ 
    get { 
    if (ViewState["FirstName"] == null) 
     return string.Empty; 
    return ViewState["FirstName"].ToString(); 

     } 
     set { 
      ViewState["FirstName"] = value; 
     } 
} 
1

第1步: 可以expost值,房产,比你可以利用的,很容易。

步骤2:要从用户的控制,你可以利用Parent财产或者可能有些custome登录访问父页面和比写代码来使用属性值访问你的页面。

+0

我们的答案是否中途遇到:) – ViSu

0

你可以做这样的事情在你的用户控件

string x=((yourparentcontrol)this.parent).label1.text; 

和使用字符串x

+0

尝试..它给了我一个错误 关键字'this'在当前上下文中不可用 –

1

您需要在控件上定义公共属性,然后在页面上使用控件时,可以将值传递给这些参数。

喜欢的东西:

<cc:mycustomControl runat="server" 
    MyProperty1=<%# label1 %> 
    MyProperty2=<%# label2 %> 
/> 
+0

这种方式如果罚款时只有几个控件通过 但具有大量代码将是凌乱的 我不能通过其他方式的价值? –

+0

不知道我明白了。为什么它很混乱。你是什​​么意思以其他方式传递?它是如何传递它的确切语法? –

+0

不,我的意思是为每个属性写代码将使代码更长 我仍然是绿色的,所以我正在努力按书去..较长的代码,错误的更多的机会 –