[英]Custom Validation Attribute that Prohibits Input of a list of invalid characters in textbox
我是一名正在使用 Asp.net MVC 的大学生,我需要进行自定义验证,以防止输入特定字符,例如 @#$%* 等特定字段。 我知道自定义验证有点麻烦,但这部分任务需要这样做。 我不介意我用一根手指打字,但是大学把学习任何编程主题或语言的所有乐趣都带走了,因为我不能花太多时间来学习熟练的概念实现。 在这种情况下,自定义验证。
我已经创建了一个 InvalidCharsAttribute Class 并且已经将必要的字段添加到必要的 class 中,如下所示...
InvalidCharsAttribute.cs
using System.ComponentModel.DataAnnotations;
namespace EnrollmentApplication.Models
{
public class InvalidCharsAttribute : ValidationAttribute
{
readonly string invalidChars;
public InvalidCharsAttribute(string invalidChars)
{
this.invalidChars = invalidChars;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
if ((string)value == invalidChars)
{
return new ValidationResult("Notes contains unacceptable characters");
}
}
return ValidationResult.Success;
}
}
要检查无效字符的字段
[InvalidChars(@"[*&%#@$^!]", ErrorMessage = "*&%#@$^! are invalid characters")]
public virtual string Notes { get; set; }
我知道if ((string)value == invalidChars)
是错误的,我只是不确定如何重写/添加代码以便我的自定义验证有效。 最简单的解决方案会很棒。
您可以使用 Regex 实现通过正则表达式验证您的字符串。 如果您要比较的字符串与任何无效字符匹配,则响应将大于零,在这种情况下,您的代码应返回 false:
Regex.Matches(yourstring,@"[a-zA-Z]").Count;
编辑后的代码如下:
if (value != null)
{
if (Regex.Matches(((string)value),@"[*&%#@$^!]").Count > 0)
{
return new ValidationResult("Notes contains unacceptable characters");
}
}
试一试,Regex 实现可能会帮助您进行验证。
问候,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.