gpt4 book ai didi

regex - 在 MVC 4 中为自定义数据类型定义正则表达式验证

转载 作者:行者123 更新时间:2023-12-04 04:59:28 26 4
gpt4 key购买 nike

我将一个项目从 MVC3 升级到 MVC4,并注意到我的一个验证器不再触发。我将其追踪到 Shared/EditorTemplates 文件夹中的自定义 DataType,该文件夹用于在整个站点中以各种形式捕获社会安全号码。 (我们只在保存后加载页面时显示最后 4 位数字,以解释正则表达式。)
SSN.cshtml

@{
var ssn = (string)ViewData.TemplateInfo.FormattedModelValue;
if (!String.IsNullOrWhiteSpace(ssn)){
ssn = "###-##-" + Model.Substring(Model.Length - 4, 4);
}
}
@Html.TextBox("", ssn, new { @class = "text-box single-line ssn", pattern = @"^(\d{3}|###)-(\d{2}|##)-\d{4}$", placeholder = "###-##-####", title = "Expected pattern is ###-##-####" })

似乎在 MVC4 中,不显眼的验证想要寻找 数据值正则表达式模式 作为渲染文本框的一个属性,不仅仅是 图案 .有没有人遇到过这个问题?

注意:我想保留对自定义数据类型的验证,所以我不必总是记得将它添加到每个模型中。

谢谢!

最佳答案

您可以拥有自己的自定义验证器并将其放入模型属性中。这是一个例子

public class SocialSecurityAttribute : RegularExpressionAttribute
{
public SocialSecurityAttribute () : base(@"^(\d{3}|###)-(\d{2}|##)-\d{4}$") { }
}

然后在全局的 asax.cs 中注册 Application start 如下
  DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(SocialSecurityAttribute), typeof(RegularExpressionAttributeAdapter));

当您使用它时,它将像任何其他内置属性一样
[SocialSecurity(ErrorMessage ...)]
public string SocialSecurityNumber{get;set;}

我喜欢这样实现,因为代码可以重用。否则你可以只使用传递正则表达式的 RegularExpressionAttribute

关于regex - 在 MVC 4 中为自定义数据类型定义正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16323591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com