c# - 如何在按钮单击时使用 HTML 表单验证?
问题描述
我正在使用 SyncFusion 和 Blazor 创建一个应用程序。在这个应用程序中,我有一个如下所示的登录页面:
使用此代码:
<EditForm Model="@ModelValue">
<SfTextBox @ref="user" Placeholder="E-mail" Created="@onCreateUser" CssClass="custom-login" Type="InputType.Email" @bind-Value="@ModelValue.Email" required></SfTextBox>
<SfTextBox @ref="password" Placeholder="Password" Created="@onCreatePassword" CssClass="custom-login" Type="InputType.Password" @bind-Value="@ModelValue.Password" required minlength="7"></SfTextBox>
<SfCheckBox Label="Stay Signed In" @bind-Checked="rememberUser" CssClass="stay-signed-in-checkbox"></SfCheckBox>
<SfButton CssClass="forgot-password-button">Forgot Password?</SfButton>
<SfButton CssClass="login-button" OnClick="validateForm">LOGIN</SfButton>
</EditForm>
@code {
SfTextBox user;
SfTextBox password;
private bool rememberUser;
private User ModelValue = new User();
public void validateForm()
{
}
/*ICON*/
public void onCreateUser()
{
this.user.AddIcon("prepend", "oi oi-person");
}
public void onCreatePassword()
{
this.password.AddIcon("prepend", "oi oi-key");
}
}
在此表单中(自动)应用了 html 浏览器验证弹出窗口。在我的情况下,这些工作有点奇怪,因此我正确地创建了一个视频插图:
https://drive.google.com/file/d/1PhETRPkgDag_DHWYlBFJL1qnodxDpaQ_/view?usp=sharing
如您所见,电子邮件字段工作正常,每次按下按钮时都会发生 html 表单验证。在密码字段中,情况并非如此,至少需要 7 个字符,当我按下提交按钮时,只填写了 3 个字符,我没有收到任何警告。
有人知道如何解决这个问题吗?
解决方案
如果要使用 html5 表单验证,该minlength
属性将不起作用。如果您想进行该验证,您应该使用pattern
属性并将其传递给pattern=".{7,}"
. 这在此答案中进行了解释。
如果您想使用 blazor 验证(更好且推荐),您需要在User
模型中使用数据注释。
对于您的特定情况,您可以使用该MinLength
属性。
public class User
{
// other propeties
// Passing data annotations
[MinLength(7, ErrorMessage = "Password Min Length is 7")]
public string Password { get; set; }
}
为了使数据注释验证正常工作,不要忘记您需要DataAnnotationsValidator
在EditForm
<EditForm Model="@ModelValue">
<DataAnnotationsValidator />
@* rest of components *@
</EditForm>
推荐阅读
- node.js - 节点 - 组合来自多个 API 的数据
- entity-framework-core - 将 EF Core 连接到 Azure Databricks
- r - AddLegend 基于 r 传单中的反应值
- python - 将元组列表中的所有元素与列表中的元素相乘
- firebase - AppsFlyer 中的 Firebase 动态链接归因 - 如何?
- python - 使用 mongodb 数据添加到接口
- javascript - 在圆周上设置线条
- azure - 如何在 Azure Devops 中工作项的描述部分创建本地文件链接?
- c# - Firebase 实时数据库的 Unity 错误
- python - 硒与python如何点击弹出按钮