ASP MVC 5自定义验证属性以比较两个属性
本文关键字:属性 两个 比较 MVC 自定义 验证 ASP | 更新日期: 2023-09-27 18:01:04
我有以下自定义验证属性来检查两个属性是否不相同,但它应用于整个模型:
[AttributeUsage(AttributeTargets.Class)]
public class ValidateUser : ValidationAttribute
{
public override bool IsValid(object value)
{
UserViewModel user = value as UserViewModel;
if(user.UserId == user.ManagerId)
{
ErrorMessage = "The user and manager cannot be the same";
return false;
}
return true;
}
}
[ValidateUser]
public class UserViewModel
{
[DisplayName("Request By")]
public string UserId { get; set; }
[DisplayName("Assign To")]
public string ManagerId { get; set; }
}
我如何创建一个验证属性,以便不必对整个视图模型进行解密,而是可以装饰需要验证的属性,以便错误消息显示在要验证的字段附近。如下所示:
[DisplayName("Request By")]
[ValidateUser]
public string UserId { get; set; }
[DisplayName("Assign To")]
[ValidateUser]
public string ManagerId { get; set; }
验证Properties值的另一种可能方法是使用Remote
属性
在您的Model类中
[DisplayName("Request By")]
public string UserId { get; set; }
[DisplayName("Assign To")]
[Remote("Validate","Home", HttpMethod="Post", AdditionalFields="UserId", ErrorMessage = "Should not be same")]
public string ManagerId { get; set; }
在控制器中
[HttpPost]
public ActionResult Validate(string ManagerId , string UserId )
{
// put some validation involving ManagerId and UserId here
return Json(true);
}
工作演示在这里