如何检查自定义模型绑定器内的属性属性

2023-12-19

我想强制系统中的所有日期均有效且不是将来的日期,因此我在自定义模型绑定器中强制执行它们:

class DateTimeModelBinder : IModelBinder {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        try {
            var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);

            // Here I want to ask first if the property has the FutureDateAttribute
            if ((DateTime)date > DateTime.Today) {
                bindingContext.ModelState.AddModelError(bindingContext.ModelName, "No se puede indicar una fecha mayor a hoy");
            }

            return date;
        }
        catch (Exception) {
            bindingContext.ModelState.AddModelError(bindingContext.ModelName, "La fecha no es correcta");
            return value.AttemptedValue;
        }
    }

}

现在,对于一些例外情况,我想允许一些日期在未来

    [Required]
    [Display(Name = "Future Date")]
    [DataType(DataType.DateTime)]
    [FutureDateTime] <-- this attribute should allow the exception
    public DateTime FutureFecha { get; set; }

这是属性

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class FutureDateTimeAttribute : Attribute {

}

现在,问题是:如何检查该属性是否存在于BindModel method?


绑定期间Model财产,我们可以通过以下方式联系财产所有者:

bindingContext.ModelMetadata.ContainerType.

所以下面的代码片段应该给你变量hasAttribute设置为 true 的未来费查财产

var holderType = bindingContext.ModelMetadata.ContainerType;
if (holderType != null)
{
  var propertyType = holderType.GetProperty(bindingContext.ModelMetadata.PropertyName);
  var attributes = propertyType.GetCustomAttributes(true);
  var hasAttribute = attributes
    .Cast<Attribute>()
    .Any(a => a.GetType().IsEquivalentTo(typeof (FutureDateTime)));
  if(hasAttribute) ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查自定义模型绑定器内的属性属性 的相关文章

  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • '{"errors":{"base":["禁止。需要用户。"]}}'

    大家好 我正在尝试上传它向我展示的用户个人资料图片 errors base 禁止 需要用户 这个错误请让我知道我做错了什么 QBContent uploadFileTask profilePic true new QBCallbackImp
  • docker swarm - 如何平衡 swarm 集群中已经运行的容器?

    我在 AWS 上有一个带有 2 个节点的 docker swarm 集群 我停止了这两个实例 最初启动了 swarm manager 然后启动了worker 在停止实例之前 我运行了一个服务 该服务在管理器和工作人员之间分配了 4 个副本
  • 保留标识符在编译的哪个阶段被保留?

    只是工作中的一点好奇心 在从事危险的工作时 我开始考虑各种编译器及其相关标准库的实现 以下是我的想法的进展 某些类别的标识符保留供 C 和 C 中的实现使用 编译器必须执行编译阶段 预处理 编译 链接 就好像它们是按顺序执行的一样 C 预处
  • 使用众多接口中的一个作为函数中的参数

    我有一个这样的函数 interface Interface1 one string interface Interface2 two string interface Interface3 three string type ManyInt
  • 自动计算与 Firebase Firestore Flutter 中存储的地理坐标数据的距离

    我已在 firestore 数据库中存储了项目的纬度和经度 字段为 item latitude 和 item longitude 因此 所有项目都有纬度和经度 我可以使用流来获取项目 例如 Stream
  • RSelenium 不工作

    我尝试使用以下命令安装并运行 R Selenium 包的简单示例 install packages RSelenium library RSelenium startServer checkForServer startServer rem
  • Javascript 中接受字母数字和一些特殊字符的正则表达式? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个像这样的 Javascript 正则表达式 x00 x7F 我想修改这个正则表达式 以便它接受所有大写和非大写字母 所有数字和一些
  • 使用 awk 或 sed 不可能进行负向前瞻,但仅 Perl 支持

    我有跨多行的文本 someabove text jpqpq mcvnmcv s ql pw lt lt lt lt lt lt uyuuey middle text jhasjh dsadsas grqywtrt klklk lt lt l
  • 什么是Environment.FailFast?

    什么是Environment FailFast 它有什么用 它用于终止应用程序 它是一种静态方法 可以立即终止应用程序 而不会被任何异常块捕获 Environment FastFail String 可以 实际上是一个很棒的调试工具 例如
  • 同一视图控制器中的 AWS AppSync 多个订阅不起作用 - iOS Swift

    仅供参考我发布了这个问题在 AWS AppSync 论坛中 以防将来 AWS 回答它 我一直在尝试制作一个简单的帖子应用程序 例如docs https docs aws amazon com appsync latest devguide
  • 在两个应用程序之间共享数据

    像这样 public class MyClass public static instance new MyClass private List
  • if 语句无法批处理(直接转到 else)

    我只是为我的批处理文件设置密码 但是 我的 if 语句不起作用 当我要求它检查我的密码是否正确时 即使我正确输入了密码 嗨 它也会转到 else 语句 这是我的代码中有问题的部分 if R hi goto b else echo acces
  • java相当于php的hmac-SHA1

    我正在寻找与此 php 调用等效的 java hash hmac sha1 test secret 我尝试过这个 使用java crypto Mac http docs oracle com javase 7 docs api javax
  • 如何获得正确的路径大小写?

    我有一个小但很痒的问题 如何在 Qt 中获取 Windows 路径的正确大小写 假设我有一条路c documents and settings wolfgang documents存储在一个QString str我想知道正确的情况 在这里C
  • 如何创建整数列表的二维列表并设置特定值

    如何创建一个像这样的矩阵 我不想使用numpy 0 1 2 3 4 5 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 我已经尝试过这个 这是错误的 class MinimiumEdits o
  • 我可以停止缩放时调整元素大小吗?

    我有一个标准网站 当用户放大 CTRL 时 如何防止元素调整大小 据我所知 没有办法防止用户放大时项目缩放 可能有一种方法捕获缩放事件 https stackoverflow com questions 995914 catch brows
  • UITableView 的“反弹区域”中的浅灰色背景

    Apple 的 iPhone 应用程序 例如 Music 和 Contants 使用 UITableView 中的搜索栏 当您向下滚动以使搜索栏向下移动时 滚动视图内容上方的空白区域具有浅灰色背景颜色 请参见屏幕截图 请注意 搜索栏顶部有一
  • 使用 python 在命令行上键入即可完成

    我想用 python 编写一个小型应用程序 目录 文件启动器 为了使其快速 我想自动完成 自动建议条目 但我想显示 这些建议会随着用户的输入而出现 根据我读到的有关 readline 模块完成的内容是 只能使用 完成热键 例如标签 有什么建
  • 快速处理位置权限

    我正在尝试实现一个基本的地图视图并将用户的当前位置作为注释添加到地图中 我已将 requestwheninuse 密钥添加到我的 info plist 并导入 coreLocation 在我的视图控制器的 did load 方法中 我有以下
  • 如何检查自定义模型绑定器内的属性属性

    我想强制系统中的所有日期均有效且不是将来的日期 因此我在自定义模型绑定器中强制执行它们 class DateTimeModelBinder IModelBinder public object BindModel ControllerCon