【问题标题】:HTML5 Validation in BlazorBlazor 中的 HTML5 验证
【发布时间】: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


【解决方案1】:

好的,我已经弄清楚了如何做到这一点。

只需将 onsubmit 事件添加到 Form 标签,然后从按钮中删除 onclick。

<form class="row" @onsubmit="SubmitForm">

然后按预期工作。

现在使用内置的 Blazor 表单组件显然有很多好处,但有时只需要使用标准的 html 表单,幸运的是有一个解决方案可以做到这一点。

【讨论】:

  • 奇怪的是它对我有用。你正在运行什么版本的视觉工作室?我在 16.9.4 和 Microsoft.AspNetCore.Components.WebAssembly 5.0.5
  • 这里也一样。然而,调查它,它看起来像预期的那样工作,而且永远不会识别 html5 验证。我不知道为什么它似乎对你有用......
猜你喜欢
  • 2022-01-09
  • 2017-12-13
  • 2014-06-12
  • 2012-03-15
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 2023-03-19
  • 2013-10-12
相关资源
最近更新 更多