在 ASP.Net WebAPI 中,RouteParameter.Optional 是否表示 URL 的可选部分?

2024-02-02

我有以下路由规则:

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

以及具有以下操作的 ProductController:

public Product Get(int id)
{
    return _svc.GetProduct(id);
}

public int Post(Product p)
{
   return 0;            
}

我可以致电Get预期行动:获取“api/产品/2”

我以为我可以打电话给我的Post像这样的动作:发布“api/产品”但它不起作用。我收到 404 错误。如果我这样做的话它会起作用:发布“api/产品/2”

我想通过设置 id 的默认值RouteParameter.Optional这意味着 url 的 {id} 部分不需要存在来匹配路由规则。但这似乎并没有发生。是制定另一条不包含 URL 的 {id} 部分的规则的唯一方法吗?

我有点困惑。谢谢你的帮助。


你需要做id可为 null 的 int默认为 null

// doesn't work
public Product Get(int? id)
{
    return _svc.GetProduct(id);
}

// works
public Product Get(int? id = null)
{
    return _svc.GetProduct(id);
}

我大约 95% 确信这两种方法都可以在 MVC 下工作(当为路由参数声明可选时),但 Web API 更严格。

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

在 ASP.Net WebAPI 中,RouteParameter.Optional 是否表示 URL 的可选部分? 的相关文章

  • 如何将 Orchard CMS 与当前的 MVC2 应用程序集成?

    对于我的项目 客户端有一个现有的 ASP NET MVC 2 Web 应用程序 该应用程序具有产品目录和购物车功能 客户正在重新设计他们的网站 并希望使用 Orchard 来维护他们的内容页面 例如主页 关于 服务等 他们希望尽可能多地使用
  • 带有 HttpContext 的 ASP.NET MVC 单元测试控制器

    我正在尝试为我的一个控制器编写一个单元测试 以验证视图是否正确返回 但该控制器有一个访问 HttpContext Current Session 的基本控制器 每次我创建控制器的新实例时 都会调用 basecontroller 构造函数 并
  • ASP.NET MVC 子操作的路由匹配

    子动作的路由匹配方法与普通动作有什么不同吗 换句话说 子操作是否有一些自动生成的 url 来进行与父操作类似的匹配 父级或子级动作处理没有区别 任何操作都遵循您在中设置的相同路线定义Application Start 这意味着父母的行为以及
  • MVC 项目中的 .Rdlc 报告 - 托管调试助手“PInvokeStackImbalance”

    我即将完成并运行我的上一份报告 我在其他报告中没有遇到过这个问题 我正在尝试根据数据库记录创建报告 当我通过 LocalReport 创建报告并为报告创建参数时 收到错误消息 托管调试助手 PInvokeStackImbalance 调用
  • 使用 AJAX 加载部分视图不起作用

    请原谅我 我是 MVC 和 AJAX 的新手 目前我只是提交一个表单 我想使用表单中的数据使用 ajax 更新部分视图中的表 My UserInfo部分视图如下所示 model IEnumerable
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 获取当前操作和控制器并将其用作 Html.ActionLink 中的变量?

    我需要能够动态检索您所在页面的当前操作和控制器名称 并实际使用它们创建一个新的 HTML ActionLink 链接到相同的操作和控制器名称 但位于不同的区域 所以我想我需要检索当前操作和控制器名称作为变量以用于构建新的 HTML Acti
  • 有没有办法让 DefaultModelBinder 在绑定到 List 时忽略空项

    我有一个场景 我想更改 DefaultModelBinder 绑定到枚举列表的方式的行为 我有一个枚举 public enum MyEnum FirstVal SecondVal ThirdVal 和一个模型类 public class M
  • 在 Dapper 中处理 Oracle 数据库连接

    我正在尝试连接到 Oracle 数据库并尝试执行查询 下面是我的模型类 using System using System Collections Generic using System Linq using System Web usi
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • ASP.NET MVC 多线程

    我想在我的 asp net mvc 应用程序中实现这样的逻辑 user clicks a button gt server executes some time consuming logic in 15 threads i get dat
  • 在asp net mvc中简单的图像上传

    我正在构建一个简单的学校门户 我一直坚持将图像上传到我的应用程序中 即用户应该将学校图像上传到我的服务器 我的图像目录为 Content Images 所有上传图像都应该上传到这个目录 我有以下代码 input type file id S
  • 自定义WebApi授权数据库调用

    我正在尝试确定我编写的自定义授权属性是否确实是一个好主意 Scenario假设我们有一系列商店 每个商店Store有一个主人 只有商店的所有者才能对商店进行CRUD操作 除了具有Claim这基本上超越了所有权要求 并表示他们可以在任何商店上
  • 如何以一种形式发布两个或多个模型?

    我正在为一个项目开发互联网课程计划应用程序 该课程计划是根据以下模型构建的 使用数据库优先方法中的实体框架生成 public partial class Subject public int Id get set public string
  • ASP.NET Web API ActionFilter 示例

    我对整个 MVC 很陌生 正在考虑使用 ASP NET Web API 重新实现一些 WCF 服务 作为其中的一部分 我想实现一个操作过滤器来记录所有操作和异常以及计时 因此我认为我应该从操作过滤器开始 但是过滤器没有被调用 public
  • 从 MVC 控制器操作调用 javascript

    我可以调用 javascript 函数吗MVC 控制器动作 不是来自视图页面 并获取返回值 如何 我需要向服务器发出请求来自代码 cs 像这里一样使用 javascript 但这是aspx页面 function getInitData va
  • 起订量:无法投射到接口

    今天早些时候我问过这个question https stackoverflow com questions 2774785 moq unable to cast 因此 由于起订量从接口创建它自己的类 我无法将其转换为不同的类 所以这让我想知
  • 如何在 MVC3 Razor 视图中呈现数据表

    我在 xls 电子表格 1 之间有一个可靠且经过测试的导入方法 该方法返回DataTable 我已将其定位在我的服务层中 而不是数据中 因为只有工作簿作为上传文件保存 但现在我想知道在哪里以及如何生成此内容的 HTML 表示形式DataTa
  • Jquery 验证不能正确验证数字?

    我在使用 jquery 非侵入式验证验证数字时遇到问题 我使用的版本是 ASP NET MVC 3 jQuery 1 9 1 jQuery 用户界面 1 10 1 JQuery 验证 1 11 0 我试图验证的输入是

随机推荐

  • Laravel 忽略变异器

    我正在使用 Laravel 的 Mutator 功能 并且我有以下 Mutator public function setFirstNameAttribute value this gt attributes first name strt
  • systemctl 状态显示 inactive dead

    我正在尝试编写自己的 简单 systemd 服务 该服务执行一些简单的操作 例如使用 shell 脚本将数字 1 到 10 写入文件 我的服务文件如下所示 Unit Description NandaGopal Documentation
  • 如何在我的类中实现前置和后置自增/自减运算符?

    我想要超载 运算符在我的 c 类中使用运算符重载来使用预增量和后增量 但只有后增量才有效 如何使这两个功能在我的班级中起作用 假设我做了一个 ABC 类 比如 using System using System Collections Ge
  • 设置变换后图像的宽度和高度:旋转

    i have a div with width 190px and height 260px i assign img tag on that div when i upload an image that shows how the im
  • cmd编程中的速度和时间问题

    最近存在一个问题 即如何将具有用户预定义文件类型扩展名的许多文件从一个文件夹移动到许多不同的文件夹 这些文件夹是根据文件名中的密钥字符串 年份 立即创建的 此外 当移动到新创建的文件夹时 文件应在没有用户预定义文件类型扩展名的情况下保存 文
  • 指针变量只是带有一些运算符的整数还是“符号”?

    编辑 最初的单词选择令人困惑 象征性 这个词比原来的 神秘的 要好得多 在关于我之前的 C 问题的讨论中 我被告知指针是 类似于整数的简单值类型 https stackoverflow com questions 32043314 over
  • python asyncio aiohttp 超时

    注意事项 这是我第一次使用 asyncio 所以我可能做了一些非常愚蠢的事情 场景如下 我需要 http ping 一个巨大的 url 列表来检查它们是否响应 200 或任何其他值 尽管像 gobuster report 200 403 等
  • 如何使用重构从类中删除泛型类型

    我有这门课 public class TimeIntCo
  • 搜索多个字符串

    我知道在文件 kmp 中查找一个字符串或在文件 trie 中查找各种字符串的有效方法 但是 多年来 我一直想知道是否有一种方法 有时认为不可能 在多个文件中搜索多个字符串 假设我有一百万个文件 我想回答诸如 查找包含字符串 香蕉 摩托艇 和
  • Pyspark结构化流Kafka配置错误

    我之前已经成功地将 pyspark 用于 Spark Streaming Spark 2 0 2 和 Kafka 0 10 1 0 但我的目的更适合结构化流 我尝试使用在线示例 https spark apache org docs 2 1
  • 微服务横向扩展数据库的最佳实践或设计

    微服务的主要好处是可以通过使用多个容器实例和负载平衡来扩展一种服务 类型 以提高吞吐量 但有一件事是 服务类型 的多个实例 即容器 共享同一个数据库实例 当多个实例在该数据库实例上写入 读取时 这可能会造成性能瓶颈 传统上 我们会扩展该数据
  • 使用 css 显示/隐藏 html 表格列

    我想显示一个基本的 html 表 其中包含用于切换显示 隐藏附加列的控件 table tr th Column 1 th th class col1 1a th th class col1 1b th th Column 2 th th c
  • Yii:HAS_MANY 搜索

    我有以下表格 user id cv personal data id cv personal data id firstname surname gender address cv laboral exp id user id positi
  • 启动时出现空白页

    在获得启动画面之前 当我启动应用程序时 我会看到一段时间的空白页 Activity但我还是明白了 怎么了 清单文件
  • Express JS 4.0 命令行工具不起作用

    我使用express 3 x有一段时间了 命令行工具运行得非常好 我决定更新到 4 0 以便我可以尝试一下并使旧应用程序兼容 4 x sudo npm install g express 安装快递完全没问题 但是当我尝试时 exprsss
  • Python多处理调用对象方法[重复]

    这个问题在这里已经有答案了 我想使用Python的多处理模块来启动一个新进程 该进程创建一些其他对象并调用该对象的loops forever方法 在我的主课中 我有 import OtherService from multiprocess
  • GWT 中的 JOptionPane.showInputDialog()

    是否有任何简单的方法来创建具有单个文本输入控件的模态对话框实例 该实例将在按 确定 时返回输入到文本控件中的字符串 我正在寻找类似于 Swing 中的 JOptionPane showInputDialog 一行的东西 您可以创建自己的类
  • 是否存在无法使用尾递归编写的问题?

    尾递归是函数式语言中重要的性能优化策略 因为它允许递归调用消耗常量堆栈 而不是 O n 是否存在根本无法用尾递归风格编写的问题 或者是否总是可以将朴素递归函数转换为尾递归函数 如果是这样 有一天函数式编译器和解释器是否会足够智能来自动执行转
  • Javascript 事件:window.event 与参数引用(函数)

    有什么区别 function test e console log Event e document querySelector button onclick test
  • 在 ASP.Net WebAPI 中,RouteParameter.Optional 是否表示 URL 的可选部分?

    我有以下路由规则 config Routes MapHttpRoute name DefaultApi routeTemplate api controller id defaults new id RouteParameter Optio