将RequiredFieldValidator添加到

时间:2016-01-23 00:12:12

标签: c# asp.net .net validation requiredfieldvalidator

我有一个包含一些文本框的页面。一些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))
        }

}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

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

它对我有用