c# - 如何使用 Blazor 中的 DataAnnotationsValidator 验证两个字段是否匹配?
问题描述
我对开发相当陌生,并尝试使用 Blazor 学习 C# 开发。我目前正在学习如何EditForms
使用DataAnnotationsValidator
.
在继续处理表单之前,我已经成功完成了验证所需的大部分工作,但是,我在验证的一个重要方面遇到了麻烦:我正在处理的表单是新用户的注册表单. 通常,在注册新用户时,您可能希望让用户重新输入一个值,例如电子邮件地址或密码,以确保他们输入正确:
<InputText @bind-Value=User.email id="email" /><br />
<ValidationMessage For=@( () => User.email) />
<label for="confirm">Confirm Email</label><br />
<InputText @bind-Value=User.confirm id="confirm"/><br />
为了验证这些字段,我将类 UserModel 实例化为 User()。
@code
{
UserModel User = new UserModel();
class UserModel
{
[Required]
[EmailAddress(ErrorMessage = "Please enter a valid email address.")]
public string email { get; set; }
[Required]
[EmailAddress(ErrorMessage = "Please confirm your email address.")]
[Compare(email, ErrorMessage = "The email addresses you entered did not match.")]
public string confirm { get; set; }
public string fname { get; set; }
public string lname { get; set; }
public string pwd { get; set; }
public string error = "";
public void Submit()
{
}
}
在 Microsoft 的文档中DataAnnotationsValidator
,我找到了一个 Class CompareAttribute
,根据文档,它“提供了一个比较两个属性的属性”。我相信这会满足我的需要,但我无法使用它。Compare
接受otherProperty
我认为是我要匹配的其他用户输入的参数,但是,我不知道如何将先前的输入作为该参数传递。
但是,我尝试过email,
,需要对象引用。我似乎不想在类本身中引用该类的实例,所以我尝试this.email
但得到错误“关键字'this'在当前上下文中不可用。”
如果有人可以帮助我找出Compare
在我的情况下使用该课程的正确方法,我将不胜感激。否则,如果我叫错了树,请告诉我。谢谢!
解决方案
这篇文章 stackoverflow.com/a/13237249/842935 回答了我的问题(感谢 Dani Herrera 指出这一点)。
参数是一个字符串,它表示您要比较的属性的名称。因此,以下代码将完成我想要完成的工作:
[Compare("email", ErrorMessage = "The email addresses you entered did not match.")]
推荐阅读
- python - 其他类中的类中的 NameError
- javascript - 使用 JavaScript 检测互联网连接状态
- hp-ux - HP-UX 修复带有故障主磁盘的镜像磁盘集上的陈旧扩展区
- javascript - 如何在 THREE.js 中对加载图像的纹理获得 Clamp-To-Border 效果?
- android - 有没有一种优雅的方法可以让 Android 屏幕阅读器尊重 Chrome 上 aria-hidden 的更改?
- python-3.x - Keras 模型错误:TypeError:load_weights() 缺少 1 个必需的位置参数:'filepath'
- dart - 有没有办法为类中的静态变量运行异步函数?
- javascript - 如何在 Firefox Web 控制台上搜索消息?
- d3.js - 具有属性的 D3 可折叠树
- python-3.x - 美汤找不到任何元素