我正在使用c#.net
我的网络表单中有不同的视图,除三个文本框(到达/看到/离开时间)外,这些视图通常都显示不同的信息。为了尝试减少代码,我创建了一个包含这三个文本框的UserControl。
我在webform的顶部以及每个视图中都引用了UserControl。
<%@Register TagPrefix="uc1" TagName="userTimes" Src="~/usercontrols/userTimes.ascx"%>
<uc1:userTimes id="userAppointmentTimes" runat="server"></uc2:userTimes>
似乎无法从后面的代码访问文本框。我需要首先填充文本框,并保留任何更新的信息,如果更改,将重新插入数据库。
此外,每个文本框都有两个验证控件:
我的两个问题是:
提前感谢您的帮助。
克莱尔
答案 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从页面级访问用户控件。