.NET attribute 验证两个字段相同
2024-10-11
16
在 .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 的值不匹配,将会返回一个验证错误信息,以指出这两个字段不相同。
更新于:7天前赞一波!
相关文章
- ASP.NET Core 2.1中的ActionResult<T>
- .NET Core 3.0创建一个单独的可执行文件
- 在ASP.NET Core 2.1中使用HttpClientFactory的3种方法
- .NET Core MVC应用程序创建教程
- .NET Core中的File和PhysicalFile
- .NET Core 读取配置文件方法
- .NET Core 管道模型中间件及管道模拟实现
- ASP.NET Core多环境配置
- Attribute特性封装通用数据验证
- .NET Core 日志配置,NLog配置示例
- .NET Core SkiaSharp替代System.Drawing的用法
- .NET Core 3.X路由中间件和终结点中间件
- .Net报错Could not find a part of the path bin\roslyn\csc.exe
- IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
- .NET Core分部视图PartialView用法
- .NET Core 视图组件Component用法
- ASP.NET Core的三种部署方式
- .NET Core中使用System.Drawing处理图像
- .NET Core Razor Page ajax请求返回400 Bad request
- .NET Core上传文件报Access xxx.tmp is denied错误
文章评论
评论问答