如何为 MVC 创建自定义验证属性

2023-12-10

我想为 MVC2 的电子邮件地址创建一个自定义验证属性,该属性不是从 RegularExpressionAttribute 继承,但可以在客户端验证中使用。有人能指出我正确的方向吗?

我尝试了这样简单的事情:

[AttributeUsage( AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false )]
public class EmailAddressAttribute : RegularExpressionAttribute
{
    public EmailAddressAttribute( )
        : base( Validation.EmailAddressRegex ) { }
}

但它似乎对客户不起作用。但是,如果我使用 RegularExpression(Validation.EmailAddressRegex)] 它似乎工作正常。


您需要为新属性注册适配器才能启用客户端验证。

由于RegularExpressionAttribute已经有一个适配器,即RegularExpressionAttribute Adapter,因此您所要做的就是重用它。

使用静态构造函数将所有必要的代码保留在同一个类中。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple  = false)]
public class EmailAddressAttribute : RegularExpressionAttribute
{
    private const string pattern = @"^\w+([-+.]*[\w-]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4}$";

    static EmailAddressAttribute()
    {
        // necessary to enable client side validation
        DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAddressAttribute), typeof(RegularExpressionAttributeAdapter));
    }

    public EmailAddressAttribute() : base(pattern)
    {
    }
}

有关更多信息,请查看这篇文章,解释完整的过程。http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 MVC 创建自定义验证属性 的相关文章

随机推荐

  • 如何获取黑莓当前位置的纬度和经度?

    我正在开发一个具有 GPS 功能的应用程序 如何获取当前位置的纬度和经度 我自己找到了解决方案 以下代码对我来说效果很好 package mypackage import javax microedition location Locati
  • Angularjs 格式日期

    Angular 中是否有任何指令 我想在用户在日期输入中写入 2 3 67 时启用用户 日期需要格式化为 02 03 1967 我自己尝试了一些东西 但它们不起作用 当显示用户输入时 只需添加 Angularjs 格式即可 yourdate
  • AngularJS指令输入宽度通过keyup调整大小

    我创建了一个指令 以便在键入时自动调整宽度的输入 如 Google 联系人 但似乎不行 因为每个字符的宽度不同 您能帮我提供一个更优化的方法吗 谢了 http plnkr co edit DSn0JDDShOXvuXXF9PP2 p pre
  • 除非提供“--jsx”标志,否则无法使用 JSX

    我四处寻找这个问题的解决方案 他们都建议添加 jsx react 到您的 tsconfig json 文件 我已经做到了 另一种是添加 include 我也做过 但是 当我尝试编辑时仍然收到错误 tsx文件 下面是我的 tsconfig 文
  • Chrome 扩展:(DOM)调试器 API 不再工作

    自版本 37 0 2062 103 以来 我们的 Chrome 扩展程序不再正常工作 它曾经在 chrome 版本 36 0 1985 143 上正常工作 具体来说 当我们使用 DOMDebugger 时 调试器 API 已停止为我们工作
  • Apple Wallet:Push Token 对于每个设备来说都是唯一的吗?

    我已经实现了一个可以为苹果钱包创建通行证的实现 一旦设备向服务器注册 就会推送该设备唯一的令牌 还是将来最终会改变 若有 原因为何 是的 为了保护隐私 推送令牌会定期轮换 这可能会随机发生 或者随着硬件的变化 用户转移到新手机 或者经常随着
  • 开发人员可以使用哪些选项来使用专用标签打印机进行打印?

    我们的业务使用定制的内部软件来创建要在大型高速标签打印机上打印的运输标签 开发人员可以使用哪些选项 库 服务 成熟软件等 来协助创建自定义格式标签并将其发送到专用标签打印机的过程 更多背景信息 Instead of using softwa
  • 使用 LayoutKind.Explicit 进行布尔编组,这是否已损坏或按设计失败?

    首先 布尔类型据说有一个四字节值的默认编组类型 所以下面的代码有效 struct A public bool bValue1 public int iValue2 struct B public int iValue1 public boo
  • Windows Phone 8 弹出窗口的宽度和高度

    我将网格放置在弹出控件中 我希望网格能够根据 Windows Phone 8 应用程序的 3 种不同布局大小自动调整大小 480 800 768 1280 720 1280 但似乎我必须设置宽度和高度脱离电网明确地因为它根据子控件大小重新调
  • API 调用中会话 ID 未刷新

    我正在尝试使用VBA Excel访问网站提供的APIwww myfxbook com API文档在这里 https www myfxbook com fr api 获取数据的步骤如下 通过登录API登录 从登录 API 的响应中获取会话的会
  • 在 Windows 上安装“kgio-2.9.2”Gem 时出错

    在 Windows 上安装 kgio gem 时遇到问题 使用 Ruby 2 1 6 32 位和已安装的 DevKit Installing kgio 2 9 2 with native extensions Gem Ext BuildEr
  • 无效的应用程序二进制文件[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 今天我们收到了有关我们提交的反馈 我们不明白所报告的问
  • 在node.js中读写json文件

    好的 我有这个 json 文件 joe name joe lastName black matt name matt lastName damon 我想用node js添加一个人 joe name joe lastName black ma
  • 以 S+(版本 31 及更高版本)为目标需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

    我正在制作通知应用程序并努力解决以下错误 java lang IllegalArgumentException com tonyapp rabbitfarm Targeting S version 31 and above requires
  • Backbone.js - 从 url 返回 JSON

    在尝试学习 Backbone js 时 我一直在尝试使用以下代码获取 JSON 文件的内容 function var MyModel Backbone Model extend var MyCollection Backbone Colle
  • 在 R 中定义 CTE(公用表表达式)?

    我在服务器上有这个表 我正在使用 R 查询它 library dplyr library DBI con lt dbConnect RSQLite SQLite memory dbWriteTable con iris iris 我能够运行
  • 重新分配选票,同时淘汰候选人

    考虑一下这个想法 我有一个排名选择投票系统 不符合门槛的候选人将在不同轮次中被淘汰 在此示例中 我们有 6 名候选人在初选中竞选两个席位 此时 我们已进入第四轮 没有获胜者 其中候选人 3 和 5 已被淘汰 在这一轮中 候选人4将被淘汰 他
  • 克隆芹菜链

    我有一个有趣的问题 试图克隆芹菜链以在组中使用 我的预期用例是这样的group chain clone args args for args in it 然而它一直抱怨没有足够的论据 我已经使用下面的内容对此进行了分解 在一个名为tasks
  • 春季启动 JSP 404

    我正在尝试在我的 Spring Boot 服务中添加一个 jsp 页面 我的问题是 每次我尝试进入该页面时 我都会遇到以下问题 白标错误页面 此应用程序没有 error 的显式映射 因此您会看到 这是后备措施 2015 年 EEST 4 月
  • 如何为 MVC 创建自定义验证属性

    我想为 MVC2 的电子邮件地址创建一个自定义验证属性 该属性不是从 RegularExpressionAttribute 继承 但可以在客户端验证中使用 有人能指出我正确的方向吗 我尝试了这样简单的事情 AttributeUsage At