【发布时间】:2021-08-01 17:40:01
【问题描述】:
我试图让内置的 HTML5 验证在我的 Blazor 应用程序中工作,但它只是被忽略了。
这是我的 Razor 代码
<form class="row">
<div class="form-row">
<label for="exampleFormControlInput1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com" @bind="@details.Email">
</div>
<div class="form-row">
<label for="exampleFormControlInput1" class="form-label">Phone</label>
<input type="tel" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com" @bind="@details.Phone">
</div>
<div class="form-row">
<button type="submit" class="btn btn-primary" @onclick="SubmitForm">Send</button>
</div>
</form>
</div>
@code {
private ContactDetails details = new ContactDetails();
public async void SubmitForm()
{
var result = await Http.PostAsJsonAsync("Contact", details);
}
}
我知道我可以使用 Blazors 验证,但我只想为此使用内置的 HTML5 验证,因为它是一个非常基本的表单。如果触发了 HTML5 验证,如何停止运行 SubmitForm 代码?
如果我从 SubmitForm() 方法中删除代码,那么当它进入该方法并返回网页并显示 html5 验证消息时,显然什么都不会发生,但显然该方法仍在被触发。如果出现 html5 验证错误,有没有办法停止代码运行?
【问题讨论】:
-
我将您的代码放到了一个新的 Blazor 项目中,HTML5 验证在 Chrome 和 FireFox 中都对我有效。除非我输入有效数据,否则
SubmitForm()不会触发。 -
谢谢。奇怪的是它没有发生在我身上。我会玩弄它看看发生了什么。
-
所以,如果我删除 SubmitForm 方法中的代码,那么它仍然会触发该方法,但之后表单会显示 html 验证消息......但无论如何它都会触发该方法。
-
我什至创建了一个新组件并在其中复制了上面的代码,它也触发了该方法。
-
就 Blazor 而言,单击按钮就是这样。它无法识别 html 表单,因此您无法检测到 html 5 验证。所以答案是 Blazor 一路走来,而不是半途而废 - 使用基本的 Blazor 验证和 EditForm。
标签: c# blazor html5-validation