根据错误指示的“重复”,单击按钮时不会进行验证。回发过程不受验证行为的影响。我说“该页面仍在发布” 时,我对此很清楚,但显然我错了。
这应该不会让人感到困惑,但是我迷路了。
我的页面上有几个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或多或少地构建了它,但是我没有运气让它正常工作。我错过了什么吗?验证失败后,为什么在页面上没有显示任何错误?
答案 0 :(得分:0)
通过将HTML5 required
属性添加到我要验证的字段中来解决。无论是单独执行还是与已经存在的逻辑一起执行,现在都不会进行表单提交,并且UI指示必须填写该字段:
<asp:TextBox runat="server" ID="RegisteredName" CssClass="form-control" required />