c# - 为什么我的RequiredFieldValidators 没有阻止表单发布?
问题描述
根据错误指示的“重复”,单击按钮时不会发生验证。回发不受验证行为的阻碍。当我说“该页面仍在发布”时,我认为我对此很清楚,但显然我错了。
这不应该如此混乱,但我迷路了。
我的页面上有几个RequiredFieldValidator
控件,我没有在其中指定 anInitialValue
因此验证器应该无法验证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或多或少地构建了这个,但我没有任何运气让它正常工作。我错过了什么吗?为什么验证失败时页面上没有显示任何错误?
解决方案
通过将 HTML5required
属性添加到我要验证的字段来解决。无论是单独还是与已经存在的逻辑一起,表单提交现在都不会发生,并且 UI 指示该字段是必需的:
<asp:TextBox runat="server" ID="RegisteredName" CssClass="form-control" required />
推荐阅读
- reactjs - 如何在 React js 组件中替换字符串中的字符?我想用空格替换所有'<'
- html - 如何更改 RMarkdown HTML 文档中的整个背景颜色?
- python - threading.Timer 协程的替代方案
- java - 使用线程运行的后台应用程序
- linux - 仅在屏幕外重新加载 ffmpeg 中的滚动绘图文本过滤器
- css - 如何将背景图片放在右下角?
- javascript - 如何初始化共享的 javascript 模块默认导出
- python - Python Scrapy在关闭时再次启动Spider
- html - 导航栏中的元素如何将您引导到与徽标在同一行的不同页面?
- asp.net-core - 在通过 window.open 请求的后端页面中识别经过身份验证的用户