我有一个包含一些文本框的页面。一些ASP:文本框是在.aspx文件中创建的,而其他自定义文件框是在代码隐藏中创建的(基于db)。我想验证以确保填写所有字段。
当我按下ASP:按钮继续时,我的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>
以上工作正常。
然而,这不起作用:
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);
在我添加EnableClientScript=false
之前,验证都没有奏效。在我添加之后,正常编码的验证器工作,但后面的代码没有。
我还尝试添加ValidationGroup并在按钮的OnClick中尝试Page.Validate,但它似乎没有帮助。
protected void SaveAndContinue_Click(object sender, EventArgs e)
{
Page.Validate();
if (Page.IsValid)
{
((Redirect))
}
}
我做错了什么?
答案 0 :(得分:1)
试试这个
...
placeHolder.Controls.Add(reqFieldVal);
reqFieldVal.Validate();
...
它对我有用