2016-01-23 83 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

相关问题