[英]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.