2016-01-23 93 views
0

我有一個帶有一些文本框的頁面。一些ASP:Textboxes是在.aspx文件中創建的,而其他自定義的是在代碼隱藏(基於db)中創建的。我想驗證以確保填寫所有字段。添加RequiredFieldValidator來動態創建後面代碼中的控件

當我按下ASP:Button繼續時,在我的html/aspx文件中創建的文本框被正確驗證,但由於某種原因,動態創建的RequiredFieldValidators被忽略。

代碼:

    <tr runat="server" id="weight_row"> 
         <td> 
          Weight: <asp:Label runat="server" ID="weightReqLabel" CssClass="required" Visible="false">*</asp:Label> 
         </td> 
         <td> 
          <asp:TextBox runat="server" ID="weight" CssClass="form-control"></asp:TextBox> 
          <asp:RequiredFieldValidator runat="server" ID="validator_weight" ControlToValidate="weight" SetFocusOnError="true" ErrorMessage="Required." CssClass="validation-error"></asp:RequiredFieldValidator> 
         </td> 
        </tr> 

上述工作正常。

然而,這不起作用:我添加EnableClientScript=false

TextBox txtbx = new TextBox(); 
txtbx.ID = "TextBox_" + i; 
txtbx.CssClass = "form-control"; 
txtbx.Text = fieldValue; 

RequiredFieldValidator reqFieldVal = new RequiredFieldValidator(); 
reqFieldVal.ID = "validator_" + i; 
reqFieldVal.ControlToValidate = txtbx.ID; 
reqFieldVal.SetFocusOnError = true; 
reqFieldVal.ErrorMessage = "Required"; 
reqFieldVal.EnableClientScript = false; 
reqFieldVal.CssClass = "required"; 
reqFieldVal.Enabled = true; 

placeHolder.Controls.Add(txtbx); 
placeHolder.Controls.Add(reqFieldVal); 

之前,沒有確認的是工作。我補充說,通常編碼的驗證器工作,但後面的代碼不。

我也嘗試添加一個ValidationGroup並嘗試按鈕的OnClick中的Page.Validate,但它似乎沒有幫助。

protected void SaveAndContinue_Click(object sender, EventArgs e) 
{ 
    Page.Validate(); 
     if (Page.IsValid) 
     { 
      ((Redirect)) 
     } 

} 

我做錯了什麼?

回答

1

試試這個

... 
placeHolder.Controls.Add(reqFieldVal); 
reqFieldVal.Validate(); 
... 

它爲我工作

+0

Sruthi,感謝您的回答!只是一個評論,因爲我看到你是新來的SO。代碼可能會在答案中變得混亂,所以我們使用特殊的格式,所以它很突出。我建議不要在「此之前」或「此行之後」這樣的詞語中,將這些行復制到您的答案,然後追加或附加您的其他代碼。然後突出顯示所有內容並使用「代碼」格式選項(括號{}按鈕)。 – scottysmalls

相關問題