.NET attribute 验证两个字段相同
2024-10-11
33
在 .NET MVC 中,你可以通过自定义验证特性来验证两个字段是否相同。下面是一些步骤来实现这个功能:
创建一个自定义的验证特性类,如下所示:
using System.ComponentModel.DataAnnotations;
public class CompareFieldsAttribute : ValidationAttribute
{
private readonly string _otherPropertyName;
public CompareFieldsAttribute(string otherPropertyName)
{
_otherPropertyName = otherPropertyName;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var otherProperty = validationContext.ObjectInstance.GetType().GetProperty(_otherPropertyName);
var otherPropertyValue = otherProperty.GetValue(validationContext.ObjectInstance, null);
if (!value.Equals(otherPropertyValue))
{
return new ValidationResult($"{_otherPropertyName} 和 {validationContext.DisplayName} 不匹配");
}
return ValidationResult.Success;
}
}
在需要验证的模型中,添加自定义验证特性,并传递另一个属性名称作为参数。例如,如果你需要验证密码和确认密码是否相同,可以将 CompareFieldsAttribute 应用于确认密码属性,如下所示:
using System.ComponentModel.DataAnnotations;
public class RegisterViewModel
{
[Required]
public string Password { get; set; }
[CompareFields("Password")]
public string ConfirmPassword { get; set; }
}
在这个示例中,我们将 CompareFieldsAttribute 应用于 ConfirmPassword 属性,并将 Password 属性的名称传递给它,以便验证这两个属性的值是否相同。
现在,当你提交表单时,如果 ConfirmPassword 的值与 Password 的值不匹配,将会返回一个验证错误信息,以指出这两个字段不相同。
更新于:1个月前赞一波!
相关文章
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
- .NET 9 中System.Text.Json 的新增功能
- 什么是.NET渐进式Web应用(PWA)
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
文章评论
评论问答