繁体   English   中英

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

[英]Why aren't my RequiredFieldValidators stopping the form from posting?

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

这不应该如此令人困惑,但是我迷路了。

我的页面上有几个RequiredFieldValidator控件,在这些控件中我没有指定InitialValue因此验证器应该无法验证ControlToValidate的值是否为空( 根据文档 )。

即使该页面具有空值,该页面仍在发布(尽管在这种情况下, 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或多或少地构建了这个组件,但是我没有运气让它正常工作。 我错过了什么吗? 验证失败时,为什么在页面上没有显示任何错误?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM