如何使用各个属性中的所有验证属性序列化模型?

2024-04-29

上下文:使用 mvc 控制器方法创建 jsonP 服务,该服务提供表单字段的定义,包括所有验证规则。

我的问题是我不知道如何序列化验证属性。我更喜欢验证属性的格式与在常规 Mvc 视图中使用不显眼的验证时由 Razor 序列化的格式相同。

为了序列化为 json,我使用 NewtonSoft.Json (4.0.2)。

型号示例: 公开课简介{

    [Required(ErrorMessage="This field is required.")]
    [StringLength(25, ErrorMessage="Max 25 chars.")]
    public string Firstname{get;set;}
    }

首选序列化 JavaScript 的示例:

     {"Firstname": "John", 
      "ValidationRules":[{"data-val-required":"This field is required.", "data-val-length-max":25, "data-val-length":"Max 25 chars." }]}

非常感谢任何帮助或指示。


这将根据数据注释属性构造一个具有给定属性的验证属性的字典:

var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(MyModel), "MyProperty");
var validationRules = metadata.GetValidators(ControllerContext).SelectMany(v => v.GetClientValidationRules());
var validationAttributes = new Dictionary<string, string>();

foreach (ModelClientValidationRule rule in validationRules)
{
    string key = "data-val-" + rule.ValidationType;
    validationAttributes.Add(key, HttpUtility.HtmlEncode(rule.ErrorMessage ?? string.Empty));
    key = key + "-";
    foreach (KeyValuePair<string, object> pair in rule.ValidationParameters)
    {
        validationAttributes.Add(key + pair.Key,
            HttpUtility.HtmlAttributeEncode(
                pair.Value != null ? Convert.ToString(pair.Value, CultureInfo.InvariantCulture) : string.Empty));
    }
}

然后,您应该使用自定义 JSON 序列化代码中的属性来序列化validationAttributes 字典。

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

如何使用各个属性中的所有验证属性序列化模型? 的相关文章

随机推荐

  • 计算嵌套列表的深度或最深级别

    A 在一项作业上遇到了真正的问题 并且令人头疼 我正在上一堂入门编程课 我必须编写一个函数 给定一个列表 该函数将返回它所达到的 最大 深度 例如 1 2 3 将返回 1 1 2 3 将返回 2 我写了这段代码 这是我能得到的最好的T T
  • Mysql正则表达式搜索不包含重复字符

    我有一个数据库表 其中包含字典中的单词 现在我想选择字谜词 例如 如果我给出字符串SEPIAN它应该获取像这样的值apes pain pains pies pines sepia etc 为此 我使用了查询 SELECT FROM word
  • 如何在 compose 中正确加载 svg 图像?

    我试图在 Jetpack compose 中加载 SVG 文件 但当我在手机上运行它时 它变成了黑色 这是我手机上的图像 我不想用tint修改器 因为它将以单一颜色加载 SVG Use Image可组合而不是Icon 图标默认进行着色 So
  • Firefox 中有 XDomainRequest 等效项吗?

    Firefox 或任何其他浏览器中是否有与 Internet Explorer 的 XDomainRequest 等效的功能 我想访问我的域之外的服务 网站 Internet Explorer 8 中的 XDomainRequest 对象是
  • 下拉菜单的 iframe z-index

    我有下拉菜单的代码 我的目标是通过 iFrame 加载该代码 不幸的是 我无法弄清楚如何使用 Z 索引加载 iFrame 外部的视图元素 代码如下
  • 如何在 PHP 中从serializeArray 获取 POST 值?

    我正在尝试这个我见过的新方法serializeArray with ajax var data form input serializeArray post var action process data data ajax etc 这样我
  • 如何在 VS 2012 中获取水晶报表?

    我对 VS 2012 有疑问 即我想创建一个报告 例如特定学生的结果 我搜索了很多然后我知道我必须安装SAP Crystal Report 并且我已经这样做了 但工具箱中仍然没有水晶报表 只有两个项目 名为 报表 报表向导 有人可以帮我弄这
  • Action Cables、嵌套 JSON 属性和 JSONAPI

    我有一个相当具体的问题 我希望你们中的一个真正聪明的人可能知道解决方案 甚至是现阶段的解决方法 具体来说 我正在处理操作电缆 嵌套 JSON 和 JSONAPI 我有一个asset模型 它具有一些属性 例如name desc等等 但它还有一
  • 覆盖 Kotlin 数据类的 getter

    给定以下 Kotlin 类 data class Test val value Int 我将如何覆盖Intgetter 以便如果值为负数则返回 0 如果这是不可能的 有哪些技术可以达到合适的结果 在花了几乎一整年的时间每天编写 Kotlin
  • Typescript 上的 Drawflow 库

    我目前正在尝试实现 Jerosoler 制作的很棒的 Drawflow 库 在这里找到 https github com jerosoler Drawflow https github com jerosoler Drawflow 在我的
  • 在 UIButton 中垂直显示标题?

    我是 iPhone 编程新手 我被这个简单的问题困扰了 我有一个UIView with a UIButton在里面 维度为UIButton40x200 靠近左边距 我需要在按钮中垂直显示文本 有没有一种方法可以在不使用任何图像的情况下完成此
  • php 的睡眠函数

    作为使用 cron 作业的可能替代方案 我找到了 sleep 函数 我以前从未使用过这个 如果我告诉我的脚本在一种循环内运行 并且在该循环内我有这样的指令 sleeps for 86400 seconds or one day sleep
  • oracle中的数字格式

    Hai 我的数字格式有问题 我正在使用 oracle 我在数据库中有一个数字字段 但是当我检索它时 我需要将其视为浮点数 例如 在检索时 现在我得到的结果为 200 DR 借方的 DR 手动给出 现在我需要得到 200 00 DR 的结果
  • Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE'

    当我在 python 中运行测试用例时 python 规范化器 setup py 测试 我收到以下异常 ResourceWarning unclosed file lt io TextIOWrapper name Users workspa
  • 在我分叉了 github 项目后,如何才能保持原始项目的最新状态?

    在 github 上 在我分叉一个项目 修改它 然后提交我的拉取请求后 似乎我必须删除并重新分叉 以便在我的拉取请求得到尊重后保持最新状态 必须不断删除存储库才能使其保持最新状态 这似乎很乏味 有没有什么方法可以使其保持最新状态而无需删除和
  • Typescript 中此子范围的问题

    This is ALMOST和其他人一样this到目前为止 我已经读过范围界定问题 除了一个细微的差别之外 这使得提出这个问题变得有意义 imo 现在最初我的问题是范围this使用 Knockout 和 Typescript 因此给出以下内
  • 将接口作为参数传递给扩展方法

    我使用扩展方法来扩展 html 助手来制作 RSS 转发器 public static string RSSRepeater this HtmlHelper html IEnumerable
  • 角度 $q.all() 是否有第二次成功,如 jQuery $.get()

    查看 jQuery 文档 我发现了以下内容 get example php function alert success done function alert second success lt fail function alert e
  • FLTK 1.4 小部件位置 w.r.t. X11 根窗口?

    context 我正在和其他人一起编码参考系统 http refpersys org C 17 上的 GPLv3 项目gitlab https gitlab com bstarynk refpersys适用于 GNU Linux x86 6
  • 如何使用各个属性中的所有验证属性序列化模型?

    上下文 使用 mvc 控制器方法创建 jsonP 服务 该服务提供表单字段的定义 包括所有验证规则 我的问题是我不知道如何序列化验证属性 我更喜欢验证属性的格式与在常规 Mvc 视图中使用不显眼的验证时由 Razor 序列化的格式相同 为了