首页 > 解决方案 > 自定义客户端验证不选择正则表达式

问题描述

目标

AttributeAdapterBase使用和创建自定义客户端验证IValidationAttributeAdapterProvider

问题

我已经使用标签助手构建了一个表单输入元素。当任何用户选择单选按钮时,此表单/ViewComponent 会加载。

此外,我在 C# 中使用AttributeAdapterBase<SomeIdAttribute>.

我有一个ViewComponent装饰如下的以下字段:

[SomeId(@"^[a-zA-Z0-9-.]+[.]+[a-zA-Z0-9-.]+$"]
public string SomeId{ get; set; }

另一个带有CustomValidation和正则表达式的字段[TenantId("^[a-zA-Z0-9-]{36}$")]可以正常工作。

问题出现在方法下面的代码中AddValidation(ClientModelValidationContext context)

MergeAttribute(context.Attributes, "data-val-regex-pattern", Attribute.RegexPattern);

null上面提到的正则表达式没有成功解析,正则表达式模式在呈现 HTML 时保持不变。

对于解析,我使用了以下行:

$.validator.unobtrusive.parse($('#someformID'));

如果我将正则表达式更改为某种简单的格式,它就可以工作。但是这个特殊的正则表达式没有被分配。

它是否在某处缺少一些转义序列?

如果我们使用 built in RegularExpression,问题仍然是一样的。

标签: c#jqueryunobtrusive-validation

解决方案


推荐阅读