Web API 可空必需属性需要 DataMember 属性

2024-01-31

我在 Web API Post 操作上收到以下虚拟机

public class ViewModel
{
    public string Name { get; set; }

    [Required]
    public int? Street { get; set; }
}

当我发帖时,出现以下错误:

“ViewModel”类型上的属性“Street”无效。标记为 [Required] 的值类型属性还必须标记为 [DataMember(IsRequired=true)] 才能被识别为必需属性。考虑使用 [DataContract] 来归属声明类型,并使用 [DataMember(IsRequired=true)] 来归属属性。

看来错误很明显,所以我只想完全确定当您有一个具有所需可为空属性的类时,需要使用 [DataContract] 和 [DataMember] 属性。

有没有办法避免在 Web API 中使用这些属性?


我和你面临同样的问题,我认为这完全是胡说八道。通过值类型我可以看到[Required]不起作用,因为值类型属性不能为 null,但是当你有一个可为 null 的值类型时不应该有任何问题。但是,Web API 模型验证逻辑似乎以相同的方式处理不可为空和可为空值类型,因此您必须解决它。我找到了一个解决方法Web API 论坛 http://forums.asp.net/t/1841917.aspx/1并可以确认它是否有效:创建一个ValidationAttribute子类并应用它而不是RequiredAttribute对于可为 null 的值类型属性:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

public class NullableRequiredAttribute : ValidationAttribute, IClientValidatable
{
    public bool AllowEmptyStrings { get; set; }

    public NullableRequiredAttribute()
        : base("The {0} field is required.")
    {
        AllowEmptyStrings = false;
    }

    public override bool IsValid(object value)
    {
        if (value == null)
            return false;

        if (value is string && !this.AllowEmptyStrings)
        {
            return !string.IsNullOrWhiteSpace(value as string);
        }

        return true;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var modelClientValidationRule = new ModelClientValidationRequiredRule(FormatErrorMessage(metadata.DisplayName));
        yield return modelClientValidationRule;
    }
}

使用中的可为空必需属性:

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

Web API 可空必需属性需要 DataMember 属性 的相关文章

  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 将 HTML 表格导出到 Excel

    我在 ASP NET MVC 视图页面上有 HTML 表 现在我必须将该表导出到 Excel 1 我使用部分视图 Inquiries ascx 来显示数据库中的表数据 使用LINQ to Entity 2 我还使用了 UITableFilt
  • 为什么软件包更新后出现“找不到方法:'Void System.Web.Http.HttpResponseException..ctor”?

    我有一个 ASP NET MVC 应用程序 它在上次 NuGet 包更新后开始出现异常行为 Web应用程序使用 NET Framework 4 6 1 开发人员计算机是Windows Server 2012 R2 Essentials 我使
  • jquery中如何使用load函数发送数据

    我想用 jquery load 函数发送字符串数据 但它没有发送 我的代码是 function dialog data function alert data var ph Org1 ph empty ph load FrontEnd Do
  • 使 .net web api 队列请求以“单线程”方式运行

    我们有一个 c net Web API 服务调用代码 该代码无法一次处理多个数据库请求 该系统适用于需求相对较小的账单在线支付 我们无法控制代码来进行可以解决问题的更改 另一个使用相同代码的小组使用 WCF API 和服务配置将并发请求限制
  • 如何从 C# 中的两个列表中获取唯一对象?

    我有两个列表对象 例如 list1 id 101 name one id 102 name two id 103 name three list2 id 111 name one id 112 name two id 114 name fo
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 服务器到 Phonegap 推送:SignalR 与 Azure 通知中心

    好吧 我在继续开发 Phonegap 应用程序时陷入了两难境地 对于实时事件通知 我应该使用 Azure 通知中心还是 SignalR 据我了解 SignalR 通过使用 Web Sockets 非常适合实时 Web 应用程序 而通知中心可
  • 如何使用 ASP.NET Razor 语法应用 bootstrap v4 alpha 的表单输入验证类?

    因此 Bootstrap v4 alpha 对表单验证类进行了一些更改 现在 要将验证样式应用于表单输入 请将 CSS 类应用于父级div form group 我正在使用 ASP NET MVC4 编写一个网站 并试图弄清楚如何将此 CS
  • 将 MVC 站点部署到 IIS 会导致找不到默认共享部分视图

    我有一个可以在本地 IIS 上完美运行的网站 我的所有页面都使用默认的共享部分视图 这称为预期 Layout cshtml 该视图放置在我的共享文件夹中 这可以在这里看到 正如我所期望的那样 这非常有效 不过 我现在发布了我的网站 然后 我
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在操作之外执行异步操作 asp.net mvc

    我希望能够在每个请求上从云数据库加载用户 并使用 asp net mvc 在控制器中的请求上提供该用户 问题是当前框架不支持从操作过滤器执行异步操作 所以 OnActionExecuting OnAuthorization 方法不允许我这样
  • 如果 mVC 中不存在该 url,则重定向到页面未找到页面

    如果 url 不存在 我需要将用户重定向到未找到页面 如果用户复制网址并将其粘贴到浏览器上 页面将显示找不到页面的方法 在这我需要将用户重定向到页面未找到页面 看看这个 如何在 ASP NET MVC 中正确处理 404 https sta
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • 如何处理 ASP.net MVC Ajax 加载页面上的 jQuery 事件?

    我有一个问题 我是 jQuery Mobile 领域的新手 对于 ASP Net MVC 部分我有点迷失 这是我的问题 在我的移动网站中 我想更改导航栏 我使用的更像是应用程序栏 按钮 而我位于编辑页面或主页等 因此 这些页面 编辑 显示
  • 在 VS 2012 中创建并运行 MVC 5 项目

    由于某种原因 我的 Visual Studio 2013 预览版无法创建 MVC 5 项目 由于 MVC 项目现已在 CodePlex 中开源 我想知道是否有一种简单的方法可以在我的 Visual Studio 2012 Ultimate
  • 我的 Razor 视图中出现奇怪的自动命名空间导入

    今天我注意到 例如 System 和 System Web Security 已导入到我的所有 razor 视图中 尽管我没有主动导入它们 我检查了 using指令 web config 编辑 也是全局 web config 添加全局导入
  • .Net Web API 未找到与请求 URI 匹配的 HTTP 资源

    我正在开发 Net Web API 它在调试和本地主机 IIS 上都运行良好 但是当我将其发布到服务器时 它开始给出以下错误 Message 未找到与请求 URI 匹配的 HTTP 资源 在服务器上 我们在该 API 的默认站点下有应用程序
  • 临时数据持久化

    我一直在与TempData最近面临一个令人困惑的案例 假设TempData在以下操作中创建 public ActionResult MyAction1 myTempData TempData myTempData 预计将在以下 Action
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都

随机推荐

  • 确定字符串是否是有效的地理位置

    我有一堆 位置 有些是准确的 哈博罗内 博茨瓦纳 有些是地理编码 40 75 73 997 有些是完全无用的 siliconcape 我需要找到一种方法来运行列表并确定每个字符串和地理编码的城市和国家 地区 并为无效位置返回空值 是否有某种
  • RequireJS:多个 main.js?

    我一直在使用 requireJS 构建一个单页应用程序 到目前为止我很喜欢它 我已经到了在主应用程序之外开发网站其他部分的阶段 但我不太确定如何 或是否 为此使用 requireJS 在我的主应用程序中 一切都是由这个脚本标签触发的
  • python 字典理解如何与内部的 lambda 函数一起工作

    我的目标是使用以下方法聚合 pandas DataFrameGroupBy 对象agg https pandas pydata org pandas docs stable reference api pandas core groupby
  • 组合器可以处理多个映射器的结果吗?

    如果在同一个节点上执行多个映射器 combiner 会合并多个映射器的结果吗 我在文档或书籍中找不到这个问题的答案 我可以找到的组合器示例似乎都产生了影响 即使它只能聚合来自一个映射器的结果 来自雅虎的Hadoop教程 http devel
  • 实体框架 DataContext 问题 - 它是否在我的控制器中得到正确处理?

    我已经收到了一些代码 并且在控制器类中有一个属性保存初始化的数据库上下文 public class MyController Controller protected AssetManagerContext db new AssetMana
  • 传播不可迭代实例的无效尝试

    将不胜感激这里的任何帮助 我有这段代码 每当表单字段收到更改时都会尝试更新我的状态 这在以前版本的 React 中工作得很好 但升级到最新版本后 我收到错误 传播不可迭代实例的尝试无效 我知道我需要使我的国家正常化 我计划这样做 然而 这将
  • ubuntu下gcc 4.5安装问题

    我尝试在 ubuntu 10 04 上安装 gcc 4 5 但失败了 这是一个编译错误 我不知道如何解决 有没有人在ubuntu上成功安装最新的gcc 以下是我的步骤和错误信息 我想知道问题出在哪里 第一步 下载这些文件 gcc core
  • 将 kml 多边形转换为 svg 路径

    我有一个带有地标的 KML 文件 每个地标都有多边形坐标 我想根据我从 json 文件读取的值动态更改多边形的填充颜色 我的理解是谷歌缓存了kml文件 所以你不能轻易地动态改变多边形的填充颜色 所以我试图将我的 kml 多边形转换为 svg
  • 右单撇号与撇号?

    右单引号 U 2019 与 撇号 U 0027 这两个角色有什么区别 我遇到了这个问题 我使用 CAtlString 从资源文件加载字符串 在某些 Windows 安装上 当尝试加载包含 U 2019 的字符串时 LoadString 失败
  • 兼容类型与严格别名规则

    将一种类型转换为另一种类型是 C 中的常见策略 这依赖于 C 结构体的布局具有一定的保证这一事实 GLib等库依靠它来实现类似继承的面向对象 基本上 struct Base int x int y struct Derived struct
  • 在 WordPress 中使用 jQuery UI 对话框

    我知道至少还有另外一篇文章处理这个问题 但答案从未明确给出 我正在 head php 文档中的 WP 子主题中工作 我在头部添加了这个
  • mgm 包中的estimateNetwork 函数存在问题

    我正在尝试使用 mgm 包运行混合图形模型 到目前为止 这是我的代码 我在最后一个命令周围加了星号 这是我似乎无法运行的命令 有人可以建议吗 library haven gt flordiss lt read sav C Users sch
  • 将不应提交的 Gradle 配置(即凭据)放在哪里?

    我正在尝试将 Gradle 构建的工件部署到 Maven 存储库 并且我需要为此指定凭据 目前这工作正常 uploadArchives repositories mavenDeployer repository url http nexus
  • 如何中断 R 中的 RPostgresql 查询

    在 RPostgresql 中中断长时间运行的查询的最佳方法是什么 例如 我想查看表格的前 10 行 并打算输入 dbGetQuery con select from big table limit 10 但有时我会忽略 限制 10 然后我
  • Rails、Ruby 1.9.3p0 和 mysql gem

    我正在运行 CentOS6 并从源代码安装了 Ruby 以及 Rails 和其他一些人员 ruby v ruby 1 9 3p0 2011 10 30 revision 33570 x86 64 linux rails v Rails 3
  • 什么时候应该使用封装? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在完成 Sun Oracle 的踪迹 http docs oracle com javase tutorial java TOC html
  • 哈希映射内存开销

    我正在研究哈希图的内部结构 其中我遇到了以下详细信息 实现是一个 HashMap Entry 对象数组 每个 HashMap Entry 包含 int KeyHash 下一个对象 对象键 对象值 默认容量为 16 个条目 空大小为 128
  • 如何检测用户是否离开了我的应用程序?

    我正在开发一个 Android 应用程序 我想检测用户何时通过单击 后退 按钮或 主页 按钮退出我的应用程序 另外 像这样的事件onInit 在我的场景中很有用 因为我只想拥有MyIn t行动首先开始 onDestroy 直到其他应用程序需
  • 选择正确的 IOS XML 解析器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 iPhone 有上百万种不同的 XML 解析器 我有一个中等大小的 XML 文件 其中包含大量重复标签
  • Web API 可空必需属性需要 DataMember 属性

    我在 Web API Post 操作上收到以下虚拟机 public class ViewModel public string Name get set Required public int Street get set 当我发帖时 出现