Web Api GET 方法可能具有可为 null 的 Guid 吗?

2024-01-05

我有一个 MVC Web API get 方法,我希望能够将可为空的 Guid 作为参数传递。如果我使用“?Id=null”设置 GET,我会收到 400 响应。我可以传递一个空的指南,但我宁愿不这样做。

无论我将 URI 更改为“id=、id=null 等”,它都不会接受 null。有谁知道如何进行这项工作?

  [HttpGet]
  public User Get(Guid? Id)

更新路由配置

  config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

Full Http Get 签名,sourceId 是 id 喜欢传递为 null 的参数。

 [HttpGet]
  public IEnumerable<ActionItemsListViewModel> GetPagedList(int skip, int take, int page, int pageSize, [FromUri]List<GridSortInfo> sort, [FromUri] ActionItem.ActionItemStatusTypes? actionItemStatus, Guid? sourceId)

发现问题了,这个过滤器说 ModelState 无效。

public class ApiValidationActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if (!actionContext.ModelState.IsValid )
        {
            var errors = actionContext.ModelState
                .Where(e => e.Value.Errors.Count > 0)
                .Select(e => e.Value.Errors.First().ErrorMessage).ToList();

            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, string.Join(" ", errors));
        }
    }
}

尝试使用:

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

Web Api GET 方法可能具有可为 null 的 Guid 吗? 的相关文章

  • 使用 Ajax Jquery post 请求进行 Json 劫持

    昨天 我读了一些关于如何预防的好文章使用 Asp Net MVC 进行 Json 劫持 http haacked com archive 2009 06 24 json hijacking aspx 规则是 永远不要通过 get 请求发送
  • WebApi 2 使用属性路由构建嵌套路由。结果同时映射到两个控制器

    我有两个控制器 一个名为 Products 另一个名为 ProductsGroup RoutePrefix api clientUrl products public class ProductsController BaseApiCont
  • OData 实体属性序列化名称与 C# 变量名称不同

    在使用 OData 的 ASP NET Web API 中 我有一个 C 对象 描述允许在 filter 中使用的字段 说我想限制 filter支持仅 filter deviceId gt someValue 随后http www ben
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • SQL Server中主键和唯一索引的区别[重复]

    这个问题在这里已经有答案了 我的公司目前正在重写我们最近获得的一个应用程序 我们选择使用 ASP net mvc4 来构建这个系统 并使用实体框架作为我们的 ORM 我们收购的公司的前任所有者非常坚定地要求我们使用他们的旧数据库 并且不对其
  • 如何分配Profile值?

    我不知道我缺少什么 但我在 Web config 文件中添加了 Profile 属性 但无法访问 Profile Item在代码中或创建一个新的配置文件 我今天也遇到了同样的问题 学到了很多东西 Visual Studio 中有两种项目 网
  • Asp.net Identity,生成 WebApi 令牌 OAuthGrantResourceOwnerCredentialsContext - 无法使用 Unity 访问 UserManager

    我正在尝试设置一个项目结构 以便拥有 WebApi WebUI 和域层 我已将所有 Asp Net Identity 对象移至 Domain 层 并在此处设置了 ApplicationContext 继承自 IdentityContext
  • ASP.NET MVC 视图引擎解析顺序

    我创建了一个简单的 ASP NET MVC 1 0 版应用程序 我有一个 ProductController 它有一个操作索引 在视图中 我在Product子文件夹下创建了相应的Index aspx 然后我引用了 Spark dll 并在同
  • 在 ASP.NET MVC 中使用或继承 DisplayAttribute 创建自定义显示属性

    我想用DisplayAttribute with Name财产 问题是班级是sealed我无法继承它来覆盖某些方法 为什么我想要这个 我想传递一些代码以便将字符串转换为Name财产 并为语言添加一个属性 就像是 MyDisplay Code
  • 使用 OWIN 自托管 WebApi 进行声明身份验证

    我使用以下配置自托管 WebApi Visual Studio 2012 NET 4 0 public void Configuration IAppBuilder appBuilder var config new HttpConfigu
  • 使用ViewData或不使用ViewData

    我一直在阅读 Professional ASP NET MVC 1 0 一书 并阅读其他有关从控制器到视图中使用 ViewModel 而不是 ViewData 的资料 但后来我看到很多 ViewData 的例子都被用在一些困难的场景中 除了
  • 为什么这条路线不匹配

    我在获取匹配路线时遇到一些问题 我使用 base 32 编码的 int 作为 Web 应用程序中幻灯片的短链接 每个幻灯片有 5 个不同的版本 我使用首字母来区分每个版本 路由始终匹配 除非 Base 32 编码 int 的第一个字符与指定
  • ASP.NET MVC2:“System.MissingMethodException:没有为此对象定义无参数构造函数。”

    我目前正在尝试修改默认 MVC 项目的注册组件 以适应我的项目 为此 我修改了 RegisterModel Register aspx 和 AccountController 我可以很好地查看寄存器视图 但是当我提交时 我在标题中收到错误
  • 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

    我有一个基于 ASP NET MVC 的应用程序 它允许根据用户进行不同级别的访问 当前的工作方式是 当用户访问页面时 会根据数据库进行检查以确定用户拥有的权限 然后根据用户拥有的访问级别选择视图 有些用户比其他用户看到更多数据并拥有更多可
  • MVC ASP.NET 或 Razor

    我对 MVC 很陌生 我对 Silver light WPF 和 MVVM 有相当多的了解 但对 MVC 知之甚少 我正在按照 Microsoft 网站上的主要教程进行操作http www asp net mvc tutorials get
  • 重定向到其他控制器中的操作

    我想从一个控制器中的操作重定向到第二个控制器中的操作 通常我会使用 RedirectToAction actionName controllerName objects 我想要重定向到的方法有两个重载 一个用于 HttpVerbs Get
  • 标准 Html.DisplayTextFor() 没有 HTML 编码吗?

    我们目前正在处理 ASP NET MVC 项目之一的一些 XSS 问题 我发现两个问题 第一个问题与我们的请求验证模式有关 攻击者现在可以利用此安全漏洞在我们的数据库中删除一些不良内容 第二个问题是我们如何显示此内容 我们使用 Html D
  • ASP.NET MVC 防伪造令牌不安全

    在没有 ssl 的情况下向服务器发出请求时 我实际上可以看到 MVC3 框架以纯文本形式生成的验证令牌密钥 该密钥存储在名为 RequestVerificationToken Lw 的 cookie 中 在混合安全环境中 实际上可以在向非
  • EditorFor 的最小值和最大值

    我一直在尝试这段代码来设置我的最小值和最大值EditorFor

随机推荐

  • 代码存储库。有什么好的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Mediaplayer进度更新到seekbar不顺利?

    我正在开发一个带有录音机和播放器的应用程序 我正在使用媒体播放器播放录制的 wav 文件 同时我想更新到搜索栏 一切工作正常 但我的问题是媒体播放器进度更新到搜索栏并不顺利 如果我们正在播放一个小文件 搜索栏的拇指会在几秒钟或几秒钟内跳跃
  • 准备好的语句或可调用语句

    我试图理解之间的区别PreparedStatements CallableStatements我没能得到它 所以请任何人都可以转换以下内容sql查询至CallableStatement 我知道如何将 Statement 转换为Prepare
  • 如何在方案中设置默认或可选参数?

    我试图弄清楚如何在方案中设置默认或可选参数 我试过了 define func a optional b a b 但我找不到方法来检查是否b是一个默认参数 因为只需调用 func 1 2 会给出错误 Error number required
  • 在 Visual Studio 中显示文件夹

    我有一个包含一组第三个 dll 的文件夹 我想将其显示在 Visual Studio 中 原因是我正在使用 VisualSvn 并且我希望能够看到这些内容何时从 Visual Studio 中更新 如果启用 显示所有文件 选项 通过从 项目
  • Matplotlib设置单独的刻度样式

    简单而直接的问题 假设我已经设置了以下 X 个刻度 plt xticks 5 4 3 2 1 0 1 2 3 4 5 是否可以将 x 5 处的刻度设置为绿色 将 x 0 处的刻度设置为不同的线条 实线 例如 样式 并将 x 5 处的刻度设置
  • Web 应用程序的可扩展性和性能、方法?

    您使用了哪些方法和技术来成功解决网站的可扩展性和性能问题 我是一名 ASP NET Web 开发人员 正在探索使用 WCF 和 SQL 集群进行 NET 远程处理 并且很好奇存在哪些其他方法 例如 云 在哪种情况下 您会应用各种方法 例如
  • MVC 3 异常:参数字典包含方法“System.Web.Mvc”的不可空类型“System.Int32”的参数“id”的空条目

    我的应用程序似乎运行良好 但我不断在 log4net 日志中收到这些异常 The parameters dictionary contains a null entry for parameter id of non nullable ty
  • AWS ElasticBeanstalk Amazon Linux 2 .platform 文件夹不复制 NGINX conf

    我已使用 Amazon Linux 2 迁移到 ElasticBeanstalk 但在覆盖默认 nginx conf 文件时遇到问题 我正在关注AL2 docs https docs aws amazon com elasticbeanst
  • 什么是现代C++? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有时会阅读有关 C 为何好或坏的讨论 有时其中一个论点会引用当今的现代 C 与旧的 C 有很大不同 我想知道到底有什么区别 现代 C 的示例是
  • 内容提供商 INSTALL_FAILED_CONFLICTING_PROVIDER(将内容提供商作为单独的 apk 安装)

    我有两个使用相同内容提供程序的应用程序 但我无法在两个应用程序中放置相同的内容提供程序 它显示 INSTALL FAILED CONFLICTING PROVIDER 错误 因此 我将我的内容提供程序放在第三个 apk 中 并从两个应用程序
  • spring-boot - 如何在环境或系统属性中指定application.properties的路径?

    如果我想运行 spring boot 应用程序 并且想在不同路径中使用差异 application properties 而不是使用配置文件 我如何指定路径application properties 如果要在不同路径下使用不同的appli
  • 尝试模拟滚轮事件 [Firefox]

    为了澄清我的示例 我想在打开的窗口中心模拟滚动事件 这应该会影响给定页面上合理的主要滚动元素 这是一些相关页面 https developer mozilla org en US docs Web API WheelEvent WheelE
  • Clojure 警告:“结果集序列已存在于 clojure.core 中”

    我是 Clojure 的新手 正在使用 Noir 框架构建一个 Web 应用程序 与 Compojure 非常相似 事实上我认为它是具有不同请求处理程序层的 Compojure 导入 JDBC 库时收到警告 WARNING resultse
  • php从邮件正文中提取文本/纯文本

    这是 imap php 库读取的一封邮件的内容 我会提取内容类型 text plain 字符集 ISO 8859 1 文本 data 10 10 2011 regione pt provincia pistoia nome nome tel
  • Cake PHP 3 debug_kit 面板

    安装 CakePHP3 版本后 3 6 2 debug kit不显示面板 在日志文件中 警告 DebugKit 正在禁用自身作为您的主机newtest my不在已知的顶级域安全列表中 localhost dev invalid test e
  • 如何在seaborn python中合并两个relplot?

    我想使用 sns relplot 在单个图中绘制数据帧的两个数据列 数据框如下所示 index x axis col1 col2 group group2 0 0 27 26 A C 1 1 45 27 B D 2 2 48 22 A C
  • 如何从派生类获取基类实例

    我不知道这是否可能 但我正在尝试从派生类获取基类实例 在 C 中 我可以使用base关键字来访问基类的属性和方法 当然 但我想使用base本身 尝试这样做会导致 在此上下文中使用关键字 base 无效 error 示例代码 public c
  • 当浏览器选项卡关闭时销毁会话

    我有用户登录 注销应用程序 我想销毁会话 当我关闭浏览器 所有选项卡 时它工作正常 IE Firefox 工作 但我想在用户关闭单个选项卡时销毁会话 我在用 session set cookie params 0 session start
  • Web Api GET 方法可能具有可为 null 的 Guid 吗?

    我有一个 MVC Web API get 方法 我希望能够将可为空的 Guid 作为参数传递 如果我使用 Id null 设置 GET 我会收到 400 响应 我可以传递一个空的指南 但我宁愿不这样做 无论我将 URI 更改为 id id