2009-01-07 37 views
2

我有一個asp.net頁面,它的一些控件是動態創建的,這些控件是下列之一;文本框,日曆或下拉列表。如何驗證動態創建的控件?

這些控件在某些情況下應該基於從db讀取的標誌進行驗證嗎?

有沒有什麼辦法可以驗證 動態創建的控件?

回答

0

我找到了解決方案。 我在這個頁面中遇到的主要問題之一是它支持ajax,我需要驗證動態創建的控件。

我的解決方案,它正常工作,同時創建控制,我添加了一個輸入屬性,它標記它,因爲它是否需要,另一個屬性,標記它作爲一個字段進行驗證或不是?

使用JavaScript,我通過與屬性「動態控制」,並根據所有輸入標籤上的「驗證attribut」,我確認這一點。很簡單,對吧?

示例代碼: 而對照創建,標誌着它像下面

txtBox.Attributes.Add("Type", "T"); // Type of control. 
txtBox.Attributes.Add("IsKeyField", "Y"); // Is dynamically created field. 
txtBox.Attributes.Add("IsMandatory", "Y"); // Is mandatory or not? 

JavaScript代碼

  var inputControls = document.getElementsByTagName("input"); 
      for(var i=0 ; i<inputControls.length ; i++) 
      { 
       if (inputControls[i].getAttribute("IsKeyField") == "Y")           
       { 
        if (inputControls[i].getAttribute("Type") == "T" || (inputControls[i].getAttribute("Type") == "C")) 
        { 
         if(inputControls[i].getAttribute("IsMandatory") == "Y") 
         { 
          if(inputControls[i].value == "") 
          { 
           errorMsg += "\n" + inputControls[i].getAttribute("KeyField_Name") + " is required."; 
           isValidated = false; 
          }        
         }       
        } 
       } 
      } 

當然,你可以調用代碼,同時單擊所需的按鈕。

btnUpload.Attributes.Add("onClick", "javascript:if(!ValidateMandatoryFields()) return false;"); 
0

您可以在同一時間創建驗證您創建這些控件

+0

我這樣做,但沒有工作! – Ahmed 2009-01-07 10:10:06

0

當你動態創建的任何控制,也與他們貼所需驗證控制,你可以在運行時啓用/禁用驗證控件。

1

基本上,您需要通過代碼創建驗證器,並通過代碼將它們附加到動態創建的控件。然後該頁面將隨頁面中的驗證器呈現給您。

如果驗證需要一個標誌,從數據庫中讀取,那麼也許使用自定義的驗證,這將使你建立你的客戶端和服務器上的特定邏輯爲您的具體驗證要求。如果你不想要,你不必提供客戶端驗證。