字典字段服务器端的 C# 正则表达式验证 - .Net Core MVC
Posted
技术标签:
【中文标题】字典字段服务器端的 C# 正则表达式验证 - .Net Core MVC【英文标题】:C# Regex Validation on server side on dictionary field - .Net Core MVC 【发布时间】:2020-09-19 16:44:35 【问题描述】:所以我通过 jquery 进行了客户端验证。我正在尝试在服务器端的应用程序中实现相同的验证
该属性是字典类型,我正在努力寻找有关如何执行此操作的示例。我无法将正则表达式规则添加到属性声明中,因为字典中的每个键都需要不同的正则表达式验证。
例如,在我的控制器 GET 方法中,我初始化了字典:
model.pt_Left = new Dictionary<string, string>
"Key1", "" ,
"Key2", "" ,
"Key3, "" ,
"Key4", "" ,
;
这些键中的每一个都代表视图上的一个输入字段。他们每个人都有自己的正则表达式验证,我已经在视图中完成了。
我不确定这是否可以在服务器端实现。我无法将正则表达式添加到属性声明中,因为这会将表达式放在我所有的“键”上
[Required]
public Dictionary<string, string> pt_Left get; set;
我拥有的正则表达式的一个例子是^[0-9]2[.][0-9]2[\/][0-9]2[.][0-9]2$
这仅适用于 Key1,Key 2-4 每个都有自己不同的正则表达式验证。
【问题讨论】:
可能有 6 种方法可以做到这一点,但是像使用自定义集合而不是 Dictionary由于每个正则表达式模式都是独一无二的,这意味着您不能拥有一个厨房水槽一刀切的模式。
但是……
为什么不扩展您的字典,让每个键都包含数据字符串和具有逻辑以处理/验证对象的模式?
类似
public class Data
public string Value get; set;
public readonly string Pattern get; set;
public IsValid => Regex.IsMatch(Value, Pattern);
public override string ToString() => Value;
然后你的字典有这个扩展数据
new Dictionary<string, Data>
"Key1", new Data() Value = "1", Pattern = "^[0-9]..." ,
"Key2", new Data() Value = "2...", Pattern = "^\w+..." ,
"Key3, new Data() Value = "3...", Pattern = "^[a-d]..." ,
"Key4", new Data() Value = "4...", Pattern = "^[0-9]..." ,
;
然后您创建了一个带有操作和验证的面向对象的数据类,而不仅仅是一个字符串。使用IsValid
和覆盖ToString
应该比旧字符串更好。
【讨论】:
以上是关于字典字段服务器端的 C# 正则表达式验证 - .Net Core MVC的主要内容,如果未能解决你的问题,请参考以下文章