.NET core 自定义参数验证

在.NET Core(现在通常称为.NET 5 或更高版本中的.NET)中,自定义参数验证通常涉及到几个关键步骤,包括使用数据注解(Data Annotations)、自定义验证属性(Validation Attributes),或者在某些情况下,通过模型绑定和中间件来手动验证。不过,对于大多数基于MVC或Razor Pages的应用程序,自定义验证属性是最直接和常用的方法。

步骤 1: 定义自定义验证属性
首先,你需要创建一个继承自ValidationAttribute的类,并实现IsValid方法。这个方法将接收要验证的值以及一个验证上下文,你可以在这里编写你的自定义验证逻辑。

 

using System;  
using System.ComponentModel.DataAnnotations;  
  
public class CustomPasswordAttribute : ValidationAttribute  
{  
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)  
    {  
        if (value == null)  
        {  
            return new ValidationResult("Password is required.");  
        }  
  
        string password = value.ToString();  
  
        // 自定义验证逻辑,例如密码长度、包含特定字符等  
        if (password.Length < 8)  
        {  
            return new ValidationResult("Password must be at least 8 characters long.");  
        }  
  
        // 如果有更多条件,继续添加  
  
        return ValidationResult.Success;  
    }  
}

步骤 2: 在模型上使用自定义验证属性

然后,在你的数据模型(Model)上,使用你的自定义验证属性来标记需要验证的属性。

public class LoginModel  
{  
    [Required]  
    public string UserName { get; set; }  
  
    [CustomPassword]  
    public string Password { get; set; }  
  
    // 其他属性...  
}

步骤 3: 在Controller或Razor Page中处理验证结果
最后,在你的Controller或Razor Page的Action方法中,ASP.NET Core的模型绑定和验证系统会自动检查LoginModel实例上的所有验证属性,并在模型无效时设置ModelState.IsValid为false。你可以通过检查ModelState.IsValid来决定是否继续执行Action方法,或者返回错误信息。

[HttpPost]  
public IActionResult Login(LoginModel model)  
{  
    if (!ModelState.IsValid)  
    {  
        // 如果模型验证失败,则返回错误视图或错误信息  
        return View(model); // 假设你正在使用Razor视图  
    }  
  
    // 如果模型验证成功,则继续你的逻辑...  
    return RedirectToAction("Index", "Home");  
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值