2009-09-28 81 views
3

我使用C#.NET中訪問內用戶控件文本框用戶控件 - Web表單

我有我的網頁表單中的不同意見,這些都普遍顯示,除了三個文本框(到達/可見/出發時間)不同的信息。爲了嘗試減少代碼,我創建了一個包含這三個文本框的UserControl。

我引用了我的webform頂部的UserControl,也在每個視圖中。

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

似乎無法從後面的代碼訪問文本框。我需要首先填充文本框,並且如果更改,還需要將任何更新的信息重新插入到數據庫中。

而且每個文本框有兩個驗證控件:

  1. 首先確保它在時間上是 格式HH:MM
  2. 其次確保到來是 的上線時間等

我的兩個問題是:

  1. 我該如何訪問用戶控件從 後面的代碼?我已經讀過,我 需要使用FindControl,但我不知道爲什麼,當我知道 它叫什麼。
  2. 我是否在後面的UserControl 代碼或網絡表單代碼 後面進行驗證 (服務器端)?

在此先感謝您的幫助。你的情況userAppointmentTimes -

克萊爾

回答

3

1)你可以通過它的ID從頁面的代碼背後訪問用戶控制。要訪問Web窗體中的文本框,您需要在用戶控件級別使用FindControl-Method。所以像userAppointmentTimes.FindControl(「WhateverTextBoxID」)應該工作。當然你需要將結果轉換爲TextBox。

您無法訪問文本框,因爲ASP.Net不會自動爲您顯示它們。所以或者你可以提供公共屬性來設置/從你的用戶控件中的文本框獲取值。

在用戶控件中,您可以通過它們的ID訪問您的文本框。

2.)將驗證控件放入您的用戶控件中。

通過webform你的意思是它的所有內部的asp.net窗體標籤,或者你有一個asp.net窗體像嵌套在裏面的FormView?如果後者爲真,則需要在FormView級別使用FindControl - formView.FindControl(「userAppointmentTimes」)。否則,用戶控件可以通過它的ID從頁面級訪問。