【问题标题】:Add RequiredFieldValidator to dynamically created control in code behind将RequiredFieldValidator 添加到后面代码中动态创建的控件
【发布时间】:2016-01-23 00:12:12
【问题描述】:

我有一个带有一些文本框的页面。一些 ASP:文本框是在 .aspx 文件中创建的,而其他自定义文本框是在代码隐藏中创建的(基于 db)。我想验证以确保所有字段都已填写。

当我按下我的 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>

以上操作正常。

但是,这不起作用:

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))
        }

}

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    试试这个

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

    对我有用

    【讨论】:

    • Sruthi,感谢您的回答!只是评论,因为我看到你是新来的。代码在答案中可能会变得混乱,因此我们使用特殊格式使其脱颖而出。我建议不要说“在此之前”或“在此行之后”之类的内容,而是将这些行复制到您的答案中,然后附加或添加您的附加代码。然后将其全部突出显示并使用“代码”格式选项(方括号 {} 按钮。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2011-01-17
    • 2011-03-12
    • 1970-01-01
    • 2017-07-17
    • 2016-02-04
    相关资源
    最近更新 更多