UserControl - 访问Web表单中UserControl中的文本框

时间:2009-09-28 14:50:51

标签: c# .net user-controls

我正在使用c#.net

我的网络表单中有不同的视图,除三个文本框(到达/看到/离开时间)外,这些视图通常都显示不同的信息。为了尝试减少代码,我创建了一个包含这三个文本框的UserControl。

我在webform的顶部以及每个视图中都引用了UserControl。

<%@Register TagPrefix="uc1" TagName="userTimes" Src="~/usercontrols/userTimes.ascx"%>
<uc1:userTimes id="userAppointmentTimes" runat="server"></uc2:userTimes>

似乎无法从后面的代码访问文本框。我需要首先填充文本框,并保留任何更新的信息,如果更改,将重新插入数据库。

此外,每个文本框都有两个验证控件:

  1. 首先确保它及时 格式HH:MM
  2. 第二次确保到达 在看到的时间等之前
  3. 我的两个问题是:

    1. 如何从中访问UserControl 代码背后?我读过这个 我需要使用FindControl 当我知道时,不明白为什么 它叫做什么。
    2. 我是否进行验证 (UserStrol)中的(服务器端) 代码隐藏或webform代码 后面?
    3. 提前感谢您的帮助。

      克莱尔

1 个答案:

答案 0 :(得分:3)

1。)您可以通过其后面的代码 - userAppointmentTimes中的ID来访问用户控件。要访问webform中的TextBox,您需要在User Control级别使用FindControl-Method。所以像userAppointmentTimes.FindControl(“WhateverTextBoxID”)应该工作。您需要将结果转换为TextBox。

您无法访问文本框,因为ASP.Net不会自动为您公开它们。因此,您也可以提供公共属性来设置/获取用户控件中文本框的值。

在用户控件中,您可以按ID访问文本框。

2.。)将验证控件放在用户控件中。

通过webform你的意思是它都在asp.net form-tag里面,或者你有一个像FormView嵌套在里面的asp.net表单吗?如果后者为真,则需要在FormView级别使用FindControl - formView.FindControl(“userAppointmentTimes”)。否则,可以通过其ID从页面级访问用户控件。