为什么我的RequiredFieldValidators没有停止发布表单?

时间:2019-06-20 13:03:24

标签: c# asp.net requiredfieldvalidator

根据错误指示的“重复”,单击按钮时不会进行验证。回发过程不受验证行为的影响。我说“该页面仍在发布” 时,我对此很清楚,但显然我错了。

这应该不会让人感到困惑,但是我迷路了。

我的页面上有几个RequiredFieldValidator控件,但我没有在其中指定InitialValue,因此验证者应该无法验证ControlToValidate的值是否为空( according to documentation

即使该页面具有空值,该页面仍在发布(尽管在这种情况下Page.IsValid返回false)。

<div class="form-group">
    <label class="col-md-3 control-label">Registered Name</label>
    <div class="col-md-9">
        <asp:TextBox runat="server" ID="RegisteredName" CssClass="form-control" />
        <asp:RequiredFieldValidator runat="server" ID="RegisteredNameRequiredFieldValidator" ControlToValidate="RegisteredName" ErrorMessage="*" ForeColor="Red" />
    </div>
</div>

<div class="col-md-12">
    <asp:Button runat="server" ID="Save" Text="Save" CssClass="btn btn-primary" OnClick="Save_Click" CausesValidation="true" />
</div>

这是后端代码:

protected async void Save_Click(object sender, EventArgs e)
{
    try
    {
        if (Page.IsValid)
        {
            // Save the form data to the database.
            var company = await SaveCompany();
            await SaveCompanyMeta(company);
            await SaveBankingDetails(company);
            await SaveContacts(company);
            await SaveShareholders(company);

            // Indicate that the operation processed successfully.
            var msg = $"Company details for new company {company.RegisteredName} have been saved. Redirecting to company list...";
            ShowSnackbar(msg, "/Companies");
        }
    }
    catch (Exception ex)
    {
        ShowSnackbar(ex.Message);
    }
}

现在我很乐意将此状态保持原状,因为它仍然可以防止将损坏的数据发布到数据库中,但是事实是它没有在UI上指示任何内容,这是我遇到的问题

我已经按照asp.net-tutorials.com或多或少地构建了它,但是我没有运气让它正常工作。我错过了什么吗?验证失败后,为什么在页面上没有显示任何错误?

1 个答案:

答案 0 :(得分:0)

通过将HTML5 required属性添加到我要验证的字段中来解决。无论是单独执行还是与已经存在的逻辑一起执行,现在都不会进行表单提交,并且UI指示必须填写该字段:

<asp:TextBox runat="server" ID="RegisteredName" CssClass="form-control" required />