要么或需要验证

2023-11-27

我想使用 ComponentModel DataAnnotations 验证两个属性中至少之一具有值。我的模型看起来像这样:

public class FooModel {
   public string Bar1 { get; set; }
   public int Bar2 { get; set; }
}

基本上,我想验证 FooModel 以便 Bar1orBar2 为必填项。换句话说,您可以输入一个或另一个,或两者都输入,但不能将它们都留空。

我希望这既适用于服务器端验证又适用于不引人注目的客户端验证。


编辑:这可能是可能重复,因为这看起来与我想要做的类似


如果您想使用自定义 JavaScript 来进行验证,则需要扩展 ValidationAttribute 类并覆盖 IsValid 方法,并实现 IClientValidatable。像下面这样的东西。

[AttributeUsage(AttributeTargets.Property)]
    public sealed class AtLeastOneOrTwoParamsHasValue : ValidationAttribute, IClientValidatable
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var param1 = validationContext.ObjectInstance.GetType().GetProperty("Param1").GetValue(value, null);
            //var param2 = validationContext.ObjectInstance.GetType().GetProperty("Param2").GetValue(value, null);

            //DO Compare logic here.

            if (!string.IsNullOrEmpty(Convert.ToString(param1)))
            {
                return ValidationResult.Success;
            }


            return new ValidationResult("Some Error");
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            //Do custom client side validation hook up

            yield return new ModelClientValidationRule
            {
                ErrorMessage = FormatErrorMessage(metadata.DisplayName),
                ValidationType = "validParam"
            };
        }
    }

Usage:

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

要么或需要验证 的相关文章

  • 仅使用扩展方法在 Linq 中进行漂亮、干净的交叉连接 [重复]

    这个问题在这里已经有答案了 可能的重复 使用扩展方法表示的嵌套 from LINQ 查询 https stackoverflow com questions 9115675 nested from linq query expressed
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • WP8.1 C# 绑定联系人图像

    信息很简单 我正在尝试创建一个可以显示用户联系人的应用程序 我也是一名自学成才的程序员 所以我在某些方面有编程经验 但总体来说我对数据绑定相对较新 首先 我有一个 ListView 控件 其中包含图像绑定
  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • 有没有办法将 boost::json::serializer 切换为美化输出?

    Using boost json serializer如中的示例所示文档 快速查看 http vinniefalco github io doc json json usage quick look html以紧凑格式保存 json tre
  • 如何使用boost库读取和写入.ini文件[重复]

    这个问题在这里已经有答案了 如何使用boost库读取和写入 或修改 ini文件 With Boost PropertyTree您可以读取并更新树 然后写入文件 请参阅load and save功能 看一下如何访问属性树中的数据 http w
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 函数参数评估顺序[重复]

    这个问题在这里已经有答案了 在 C 和 C 中 函数参数的求值是否有固定的顺序 我的意思是 标准怎么说 是吗left to right or right to left 我从书中得到的信息令人困惑 是否有必要function call应该使
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 将一个整数从 C 客户端发送到 Java 服务器

    我使用此代码将一个整数从我的 Java 客户端发送到我的 Java 服务器 int n rand nextInt 50 1 DataOutputStream dos new DataOutputStream socket getOutput
  • 按值返回的函数的返回语句中的初始化

    我的问题源于深入研究std move in return语句 例如以下示例 struct A A std cout lt lt Constructed lt lt this lt lt std endl A A noexcept std c
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • 字符串 c 的二叉树

    我正在尝试实现一个能够在 c 中保存字符串的二叉树 在让代码适用于整数之后 我尝试稍微修改它以处理字符数组 现在我似乎完全破解了代码 但不知道如何破解 任何帮助表示赞赏 include
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • C# amo 获取角色完整

    我正在开发一个 SSAS 项目 其中除其他事项外 我需要获取 C 中表格多维数据集的完整用户列表 目前我让它以这样的方式工作 我可以获得角色 但数据不完整 当我调用 Server Database Roles 为了便于阅读而简化 属性并枚举

随机推荐

  • Visual Studio 2008 中的 if 语句怪异

    我遇到了一个非常奇怪的问题 所以我记录了我的会话 因为我认为没有人会相信我 我遇到了一个似乎非常基本的错误 这是一个单线程应用程序 我所做的就是评估布尔值 布尔值等于 false 但是 if 语句的执行就好像它是 true 一样 有点像 你
  • Imaplib 中的 EOF 错误

    我正在编写一个 python 小程序 用于监视工作场所电子邮件箱的未读计数 当我在小程序闲置大约 10 分钟后尝试使用任何 imaplib 方法时 遇到了 EOF 错误 一切工作正常 直到小程序存活超过 10 分钟 这是imaplib对象的
  • OpenMP - 仅创建一次线程

    我尝试使用 OpenMP 编写简单的应用程序 不幸的是我在加速方面遇到问题 在此应用程序中 我有一个 while 循环 该循环体由一些应按顺序执行的指令和一个 for 循环组成 我用 pragma omp parallel for使这个 f
  • Actor设计模式和现实世界的例子

    我目前正在学习 Actor 设计模式 或者模型 它看起来很有趣 然而 我正在努力寻找任何像样的现实世界示例来说明如何或在何处应用此模型 除了带有余额的简单银行帐户或游戏的敌人坐标等的基本示例之外 作为我研究的一部分 我遇到了一个示例电子商务
  • Asp.net MVC 设置验证日期格式在 Chrome 上失败

    我在 asp net mvc 中设置验证日期格式 Chrome 时遇到问题 对于 IE Firefox 等其他浏览器可以正常工作 我在模型中定义了日期 如下代码所示 Required Display Name Data fi publica
  • 与sql server中的“top”相反,不使用order by,没有键/索引

    我想从 SQL Server 表中检索最后 10 个结果 我希望它们是最后插入的 10 条记录 我该怎么做 我想写select bottom 10 from mytable然而这并不存在 据我所知 我想要插入最后 10 行 没有时间戳 你不
  • Bootstrap 模态远程源错误处理

    我们正在使用Bootstrap Modal window显示一些通过远程源加载的 html 我们正在通过以下推荐的方式执行此操作Bootstrap文档 通过使用选项remote并传递给它一个url 正如所描述的here 例如 id moda
  • Android 在上传到服务器之前压缩视频

    如何在上传到远程服务器之前在 Android 中压缩视频文件 我不想压缩该文件 因为我认为这不会有太大帮助 我想压缩视频并以较低的比特率或分辨率重新编码 我们的想法是从每个设备获取标准的 360 480 30 FPS 视频文件 这样我就可以
  • 仅限 css 复选框(带有内容属性)

    如何仅使用 css 无 JS 无 JQ 制作自定义复选框 选中时内容为 on 未选中时内容为 off Thanks reedit 好的 经过大量复制 粘贴 删除之后 现在可以了 Thank input type checkbox posit
  • Spring @RequestBody 继承

    我读过几篇试图解释这一点的帖子 但我无法让它发挥作用 我有一个场景 输入JSON我的服务可以有几个子类型 基本上 我有一个基类UserDto进而ClientDto and OwnerDto两者都延伸自UserDto 我希望控制器能够解析具体
  • 将 ActionListener 添加到 JList

    我有一个带有字符串数组的 JList 基本上它显示餐厅菜单 在 JList 旁边 我有另一个空的 JList 每当用户双击第一个 JList 显示菜单的位置 中的字符串时 我希望它显示在紧邻的下一个 JList 上 我怎么做 你可以试试 f
  • 在 iOS 中使用多个 Storyboard

    我的目标是创建一个选项卡式应用程序 然后在单独的故事板中构建每个选项卡的视图 我的主故事板是一个选项卡视图 Then I create a secondary storyboard storyboard 2 with 2 View Cont
  • 如何在python中计算两点之间的直线的坐标?

    如何获取python中两点之间的所有坐标点 例如 我有一个点的坐标为 x1 y1 另一个点的坐标为 x10 y10 我需要它们之间的所有点 在本例中例如 x2 y2 x9 y9 非常感谢您的帮助 他们全部 有无数个 You can 计算这两
  • 无法安装 JSON gem

    我需要安装 json 因为我收到此错误 Could not find json 1 4 6 in any of the sources I ran gem install json and bundle install但我只能在需要 jso
  • 使用 ReactiveUI 中的代码隐藏在 ListBox 内绑定数据

    我有 WPF 列表框
  • OpenCV 确定相交/重叠区域

    我正在使用 OpenCV 和 python 创建一个拼接程序 目前正在很好地拼接图像 现在正在尝试将它们混合在一起 最终目标是使用图形切割来更好地缝合它们 但现在我只是根据发现的单应性重叠图像 Here is a photo of my c
  • px、dip、dp 和 sp 有什么区别?

    计量单位之间有什么区别 px dip dp 和 sp 来自Android 开发者文档 px Pixels corresponds to actual pixels on the screen in Inches based on the p
  • Lato 字体在 IE 和 Firefox 中缺少字母

    Lato Google 托管 不确定字体 字体是怎么回事 在 IE 8 上 字体看起来很混乱 缺少字母和单词空格 而且我听说早期 不是那么早期 版本的 Firefox 也是如此 当您无法在许多浏览器上阅读字体 或托管字体时 它有什么意义 拉
  • 需要一个正则表达式来排除某些字符串

    我正在尝试获取一个匹配的正则表达式 somefile 1 txt somefile 2 txt somefile anything txt 但不匹配 somefile 16 txt I tried somefile 16 txt 运气不好
  • 要么或需要验证

    我想使用 ComponentModel DataAnnotations 验证两个属性中至少之一具有值 我的模型看起来像这样 public class FooModel public string Bar1 get set public in