将 IClientValidatable 保留在模型层之外

2024-04-24

我在用着数据注释验证我的模型类。我还编写了一些自定义属性。最终,模型被推送到在 ASP.NET MVC 中构建的 Web 界面,但我希望保持关注点的清晰分离,因此模型类有自己的程序集(也将由控制台应用程序使用)。必须使用IClientValidatable模型层中的接口(这是一个网络问题)打破了我想要的松散耦合。有想法该怎么解决这个吗?谢谢。


您可以为数据注释属性添加适配器。

例如,您有 MyValidationAttribute。

您需要添加适配器,如下所示:

 public class MyValidationAttributeAdapter  : DataAnnotationsModelValidator<MyValidationAttribute>
    {
        public MyValidationAttributeAdapter(ModelMetadata metadata, ControllerContext context, MyValidationAttribute attribute) : base(metadata, context, attribute)
        {
        }

        public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
        {
            //return client rule here
            return base.GetClientValidationRules();
        }
    }

在应用程序的某处开始添加代码,注册此适配器:

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

将 IClientValidatable 保留在模型层之外 的相关文章

随机推荐

  • Kafka的消息键有什么特别的地方吗?

    我没有看到任何提及消息键 org apache kafka clients producer ProducerRecord key 除了它们可以用于主题分区 我可以自由地将我喜欢的任何数据放入密钥中 还是有一些我应该遵守的特殊语义 该密钥似
  • 分组时间序列(面板)数据的交叉验证

    我使用面板数据 随着时间的推移 我观察许多单位 例如人 对于每个单元 我都有相同固定时间间隔的记录 当将数据分为训练集和测试集时 我们需要确保这两个集是不相交的并且顺序的 即训练集中的最新记录应该在测试集中最早的记录之前 参见例如此博客文章
  • 如何使用可用内存有效地比较 1,000 张图像

    这是一个棘手的问题 我的磁盘中存储了大约 1 000 张图像 我想通过成对比较来找到彼此相似的图像 所以我必须做周围1 000 999 2 https stackoverflow com questions 46958633 generat
  • 如何用 Java 以编程方式下载网页

    我希望能够获取网页的 html 并将其保存到String 这样我就可以对其进行一些处理 另外 我如何处理各种类型的压缩 我将如何使用 Java 来做到这一点 我会使用像样的 HTML 解析器Jsoup http jsoup org 那么就很
  • 如何通过部分名称查找文件夹和文件c#

    在我的硬盘驱动器的特定文件夹中 我存储了许多其他子文件夹和文件 现在我想按部分名称列出这些文件夹和文件名 for example c webapi xx folder c mvctutorial xx folder done webapi
  • Gradlew bundleRelease 不会在 React-Native 中生成发布 apk

    我尝试获取应用程序的apk 我以前也做过 效果很好 但是 我今天尝试使用其他应用程序的获取 apk 但它没有给我发布 apk 为什么 我跟着这些步骤 https facebook github io react native docs si
  • 如何更改 ComboFieldEditor 的内容?

    我想更改其中一个的值ComboFieldEditor取决于另一个ComboFieldEditor在 Eclipse 插件中 例如 如果用户更改package 需要在第二个中填充不同的类ComboFieldEditor The ComboFi
  • 如何拆分 XML

    我的第一篇文章在这里 我已经搜索过 但没有找到我要找的东西 我不太确定需要什么技术来完成以下操作 我使用 Mule 3 3 CE 我需要拆分 XML 文件 我需要在每个分割的 XML 中保留 rootElement 及其属性 所有 XML
  • 访问 Firestore 规则中的父文档字段

    我正在 Firestore 中实现一本食谱书 其中每个用户都可以查看所有用户创建的所有食谱 但只有食谱的原始作者才可以编辑或删除食谱 任何用户都可以创建新配方 我的问题是 我无法设置子集合的权限以 侦听 子集合父文档的字段 每个配方文档包含
  • 通过流式传输将分段文件上传到 Amazon S3 时内存使用率过高?

    我的 Java Spring 应用程序中的以下方法直接将文件流式传输并上传到 Amazon S3 存储桶 我研究过 使用流将使上传大文件 对于我的用例 gt 100MB 视频 更加内存有效 当使用 25MB 文件测试该方法时 Kuberne
  • 对组合和单独的多个 group_by 变量进行汇总

    我使用 dplyr 的 group by 和汇总来获取每个 group by 变量组合的平均值 但也想单独获取每个 group by 变量的平均值 例如 如果我跑 mtcars gt group by cyl vs gt summarise
  • 从 JSON 模式动态创建表单 [Angular 8]

    我正在努力从 Angular 8 中的 JSON Schema 创建动态表单 我找到了一些库 但是一个很旧 https github com dschnelldavis angular2 json schema form 上次提交约 2 年
  • DeprecationWarning:请使用 dns.resolver.Resolver.resolve()

    我使用resolver 作为socket 的替代品 因为我发现当多个连接建立到不同的IP时 它最终会停止工作 无论如何 它会向我返回一个警告 我应该使用dns resolver Resolver resolve 更改它时 它给我一个错误 T
  • 在erlang中打印数字的每个数字的问题

    我正在尝试编写一个程序 该程序将读入一个数字 然后将该数字的每个数字输出到列表中 然而 在我尝试使用数字 8 和 9 之前 大多数事情看起来都很好 该程序仅输出 b t反而 如果输入的数字包含8或9 同时还有其他数字 例如283 就可以正常
  • jqGrid:使用本地数据类型加载嵌套子网格时出现问题

    我正在尝试使用 jqGrid 和本地数据让嵌套子网格工作 我已经搜索了很多 但未能找到解决方案 这是我的代码的简化示例 var mainGridData main grid data id m1 col1 11 col2 12 id m2
  • 将工具提示添加到字体很棒的图标

    这里有人为字体很棒的图标添加了工具提示吗 我有关注 jsfiddle https jsfiddle net HarrietFiddles 1btr64kw 1 但似乎找不到向图标添加工具提示的指南
  • 在撤销之前混乱的集成后,无法从主分支完全集成到功能分支

    我正在使用 Perforce P4V 客户端 版本 2013 1 611291 日期为 2013 年 3 月 20 日 我尝试从主分支合并 集成到我的功能分支 我已经很久没有这样做了 所以大量的文件被添加到变更列表中 然后我解决了无法自动合
  • 如何使用javascript获取DIV子元素

    HTML 代码
  • 为什么模拟器上的外部存储处于删除状态?

    我正在创建应用程序来在外部存储上存储数据 但是该代码在我的模拟器上不起作用 String state Environment getExternalStorageState The returned state is always remo
  • 将 IClientValidatable 保留在模型层之外

    我在用着数据注释验证我的模型类 我还编写了一些自定义属性 最终 模型被推送到在 ASP NET MVC 中构建的 Web 界面 但我希望保持关注点的清晰分离 因此模型类有自己的程序集 也将由控制台应用程序使用 必须使用IClientVali