要么或需要验证

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(使用前将#替换为@)

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

  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • 为什么选项卡页正文不使用 .NET 选项卡控件进行更新?

    我在使用 C Visual Studio 2010 中的 NET TabControl 时遇到一个奇怪的问题 启动 Windows 窗体应用程序 添加一个选项卡控件和一个按钮 向两个选项卡页添加两个不同的标签 以便您可以区分它们 该按钮的作
  • 使用 ITextSharp 从内存流附加 PDF 文件时遇到问题

    我在附加内存中创建的 PDF 文件并将其附加到电子邮件模板时遇到问题 电子邮件没有任何问题 但没有附件 我不明白为什么会发生这种情况 这是该过程的完整代码 ExtendedEmailTemplate emailTemp new Extend
  • 简单、高效的弱指针,当目标内存被释放时设置为 NULL

    有没有简单 高效的弱 保护指针 我需要多个指向同一对象的指针 当删除该对象时 这些指针都会自动设置为 NULL 有一个 主 指针始终用于删除对象 但可以有多个其他指针引用同一对象 以下是一些不太符合我的需求的解决方案 QPointer ht
  • 当 edmx 文件位于单独的项目中时出错

    我有问题说 在配置中找不到指定的命名连接 或者不打算与EntityClient提供者 或无效 我的 edmx 文件位于单独的项目中 但该项目的连接字符串app config 什么可能导致问题 确保 app config 位于设置为启动项目的
  • 从列表中获取数组而不进行堆分配

    我有一个列表 我想将其数组分配给一个属性 public void BuildMesh List
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 为什么表达式树不能包含命名参数规范?

    使用 AutoMapper 我找到了一个非常适合命名参数的地方 ForMember s gt s MyProperty opt gt opt MapFrom s gt BuildMyProperty s isAdvanced false 但
  • .NET 4.0 进程中的 clr.dll!LogHelp_TerminateOnAssert

    背景 我正在开发一个基于 WinForm 的 NET 4 0 桌面应用程序 该应用程序几乎没有线程和计时器 并对用户控件使用一些 GDI 处理 在我的开发过程中 我通常会查看 sysinternal 的 Process Explorer 以
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 在硬件不足的情况下进行编码

    我目前正在使用 C 中的 SIMD 指令进行编码 并尝试使用 IDE 在实时编码时显示错误 拼写错误等 问题是 我使用的是 AVX512 指令 我的硬件不支持这些指令 只有我用于编译的服务器支持 有没有一种方法可以在 IDE 中进行错误检查
  • C# Response.Write pdf 不适用于 Android 浏览器

    我目前在 Android 环境中使用 pdf 导出时遇到了巨大的问题 我正在使用报告查看器控件将报告呈现为字节数组 接下来我使用response binarywrite方法将字节流输出到浏览器 这适用于所有浏览器以及 iPhone 和 iP
  • Tulpep PopupNotifier 无法与计时器一起使用

    using System using System Data SQLite using System Drawing using System Timers using System Windows Forms using Tulpep N
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • 在 C++ 中的 Switch-Case 中执行 OR 运算

    你会如何在 C 中做到这一点 例如 如果用户按 ESC 或 q 或 Q 我试图触发程序退出 我尝试寻找它 但在 C 中没有找到它的语法 我知道如何使用 if else 来做到这一点 但是可以使用 switch case 来做到这一点吗 当然
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求

随机推荐

  • 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