使 ASP.NET MVC Route Id 参数成为必需

2024-01-03

我有这条路线:

routes.MapRoute(
            "PlaceDetails",
            "{controller}/{action}/{id}",
            new { controller = "Place", action = "Details", id = UrlParameter.Optional }
        );

这路由很好: mysite.com/place/details/123

使 Id 123 可用于地点控制器的详细操作 - 然后可以查找地点“123”。

然而 - 这个 URL 也会传递给控制器​​: mysite.com/place/details/

我想要这个返回HttpNotFound- 但它会向控制器发送一个 null Id - 并且需要我来处理它。

如果路由本身实现这一点,而不是需要在控制器本身中进行不合时宜的空检查,那么看起来会更整洁。

我在谷歌中没有找到任何关于这个具体问题的信息。

我怎样才能做到这一点?


为了使id值是必需的,您不能将其设置为UrlParameter.Optional或提供任何其他默认值。如果 URL 段中没有值,也没有默认值,则路由将与请求不匹配。

routes.MapRoute(
    "PlaceDetails",
    "{controller}/{action}/{id}",
    new { controller = "Place", action = "Details" }
);

但您可能还需要以另一种方式限制路由,以防止它在不应该匹配的情况下匹配。

routes.MapRoute(
    "PlaceDetails",
    "Place/{action}/{id}",
    new { controller = "Place", action = "Details" }
);

See 为什么在 asp.net mvc 中先映射特殊路由,然后再映射普通路由? https://stackoverflow.com/a/35674633/181087了解详细信息和其他选项。

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

使 ASP.NET MVC Route Id 参数成为必需 的相关文章

  • 具有自动返回类型推导的 Friend 函数模板无法访问私有成员

    抱歉这个问题的标题太复杂了 我试图描述我为这个问题构建的最小 SSCCE 我有以下代码 include
  • 嵌套绑定表达式

    这是一个后续问题我之前的问题 https stackoverflow com questions 2735294 templates function pointers and c0x include
  • Linq Any 始终返回 true

    我已经使用 Linq to Entities 多年 但这是我第一次遇到这个问题 我有Tips and Items表 每个提示可以有很多项目 我的数据库中只有 3 个项目 编辑项目时 我想确保GivenId对于具有相同提示的项目 字段是唯一的
  • 委托 System.Action 不接受 1 个参数

    那个行动 readonly Action execute public RelayCommand Action execute this execute null public RelayCommand Action execute Fun
  • 使用 C 序列化 double 和 float

    如何在 C 中序列化双精度数和浮点数 我有以下用于序列化短整型 整数和字符的代码 unsigned char serialize char unsigned char buffer char value buffer 0 value ret
  • 安装/编译 pylzma(lzma python 绑定)

    我已经向作者提出了这个问题website http www joachim bauch de projects pylzma comment page 1 comment 5211 但我想我也可以在这里问 我一直在尝试使用以下设置安装 py
  • 减少最大值并保存其索引

    int v 10 2 9 1 3 5 7 1 2 0 0 int maximo 0 int b 0 int i pragma omp parallel for shared v private i reduction max maximo
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • 如何更改控制台中的光标位置?

    我想用Console ReadLine 在上一行中并使其显示如下 HeresomeText gt input Not like HeresomeText gt input 可以做吗 使用 Write 方法而不是 WriteLine 方法 C
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • ofstream::operator<<(streambuf) 是一种复制文件的缓慢方法

    我需要一种跨平台 无需外部库的复制文件的方式 在我的第一遍中 我想出了 省略错误处理 char buffer LEN ifstream src srcFile ios in ios binary ofstream dest destFile
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • 如何在运行时统一捕捉两个对象?

    这是 3D 模型 我想将另一个像这样的模型连接到顶部的银色连接器 并将另一个模型连接到右侧 所以请帮助我捕捉它 https i stack imgur com qoWwl png我想知道如何在运行时将两个 3D 对象对齐在一起 即 在 玩
  • 使用 C# 在 XML 文档中查找特定值的好方法是什么?

    我正在调用 Oracle 公开的 WebService 它接受 ItemID 的输入并向我返回相应的 Item Number 我想获取从响应中包含的 XML 返回的项目编号 XML 看起来像这样
  • 基于 C++ 组件的类

    Hi 我正在使用容器编写一个基于组件的类 但是在考虑了许多不同的方法之后 我找不到真正符合我想要的方法 这是总体思路的一个例子 我已经写的代码 Abstract class Component class Component public
  • 是否可以使用 struct stat 描述符获取和设置文件名?

    是否可以在获取或设置 重命名 文件名时给出文件的绝对路径 并将 struct stat 实例作为 lstat 函数的参数 正如我在文档结构中发现的那样 struct stat dev t st dev ID of device contai
  • 将变量传递给 SSIS 中的项目参数

    我是这个网络的新手 希望我能找到这个问题的答案 我有一个 SSIS 项目 其中包含多个使用项目参数的包 我正在尝试更新项目参数 例如 PeriodStart 2014年5月31日 我找不到动态写入项目参数的方法 我在 4 0 框架中使用 V
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • SQlite 查询 - 如何检索多列数据?

    我很难在网上找到一个关于使用 xcode 和 cocos2dx 从 SQlite DB 获取多个值的工作示例 这是我的sql查询 char sql query 100 sprintf sql query SELECT FROM SQList
  • Interlocked.CompareExchange 可以抛出 NullReferenceException 吗?

    From https msdn microsoft com en us library bb297966 v vs 110 aspx https msdn microsoft com en us library bb297966 v vs

随机推荐

  • 如何在AChartEngine中设置CombinedXYChart的日期格式?

    我可以像这样设置时间表中的日期格式 final GraphicalView view ChartFactory getTimeChartView context dataset mRenderer dd MMM yyyy 但我不能在 Com
  • Spring服务默认作用域

    这是 a 的默认范围Spring 4 Service 设计一个有意义吗 Service实现存储有关当前登录用户的信息 根据当前HTTP会话 通过类属性 也可以通过使用final修饰符 Spring 4 Service 的默认范围是哪个 默认
  • C++11的long long真的至少是64位吗?

    It says 在维基百科上 en wikipedia org wiki C 11 Type long long int and 在 Stroustrup 的常见问题解答中 www stroustrup com C 11FAQ html l
  • Git 并在多个分支上工作

    我有几个 Git 分支 experimental something 和 master 我切换到 实验 分支 我注意到一个与 实验 无关的错误 属于 某事 中所做的更改 我应该如何修复它 我想我应该切换到 某事 修复错误 提交 然后回到 实
  • 显示磁盘大小和可用空间(以 GB 为单位)

    是否有一行代码可以以 GB 而不是 mb 为单位显示逻辑磁盘的可用大小和磁盘空间 我尝试做一些研究 但找不到一个衬垫 我确实尝试过将其除以 1GB 但这不起作用 我该如何实现这一点 gwmi win32 logicaldisk Format
  • 检查 Python FTP 连接

    我有一个 FTP 连接 可以从中下载许多文件并在其间进行处理 我希望能够检查我的 FTP 连接在这期间没有超时 所以代码看起来像这样 conn FTP host blah conn connect for item in list of i
  • 如果验证失败如何停止表单提交[重复]

    这个问题在这里已经有答案了 更新 我的问题更多是关于How to prevent the form submit if the validation fails 该链接不能解决我的问题 只是重申我正在做的事情 我有一个带有一堆输入字段的表单
  • Android L 中应用程序内容位于导航栏后面

    正如你所看到的 我的 知道了 按钮位于导航栏后面 无法修复它 我努力了
  • Java字节码注入

    我正在尝试理解这个概念 我的问题是 从性能角度来看 此操作的成本是否昂贵 如果是 为什么 如果我试图通过在调用方法后注入一些代码来拦截传递给该方法的某些参数 那么这种注入是发生一次还是每次调用该方法时都会发生 该注入代码驻留在哪里 在应用程
  • 如何从 WSGI 应用程序返回内存中的 PIL 图像

    我读过很多类似的帖子this one https stackoverflow com questions 1001068 creating dynamic images with wsgi no files involved详细介绍了如何使
  • 使用 Nokogiri 我收到错误“initialize”:getaddrinfo:没有这样的主机已知。(SocketError)”

    我编写了下面的代码 只是为了启动 Nokogiri 来满足要求 当我运行它进行测试时出现错误 D WIPData Ruby Scripts gt Nokogiri rb C Ruby193 lib ruby 1 9 1 net http r
  • 分布式 Celery 调度程序

    我正在寻找一个类似于 Python 的分布式 cron 框架 并找到了 Celery 然而 文档说 你必须确保一次只有一个调度程序针对一个计划运行 否则你最终会得到重复的任务 Celery 使用 celery beat Persistent
  • 将数据从数据库插入到另一个数据库

    我想将旧数据库表中的值转移到新数据库表中 旧数据库结构 表一 Country 国家 地区 ID 国家的名字 新的数据库结构 表二 Countries Id Name 我使用了以下插入查询 例如 select insert into Coun
  • 通过 Graph API 使用 OneNote 页面内容

    通过图形 API 使用 OneNote 时 我遇到了许多问题 我知道 OneNote 使用的不是直接的 html 他们需要为 API 来回转换它 但这似乎不是那么复杂的任务 我正在处理内容中的标签 并且需要能够更新标签元素 除了我有一个有缩
  • vb.net 或 c# 中 X2Axis 中的 Zedgraph 幅度问题

    我很难尝试使用 zedgraph 获取 excel 半对数图 我目前有 为了做到这一点 我有 Dim pane As New GraphPane reverse order pane X2Axis IsVisible True pane X
  • Android Activity 生命周期:onStart() -> onStop() 可能吗?

    In the Android 应用程序基础知识 http developer android com guide topics fundamentals html actlife它表示在调用 Activity 生命周期的 onStart 方
  • 从 3 个点生成 AffineTransform

    给定坐标系 A 中的 3 个点 x 和 y 坐标 和坐标系 B 中的 3 个对应点 我如何导出将从 A 转换为 B 的 AffineTransform 我的问题类似于创建变换以从一个矩形映射到另一个矩形 https stackoverflo
  • Python Plotly 将轴编号格式化为 %

    这是数据框 df pd DataFrame col 1 0 00143 0 00653 0 00732 col 2 0 00984 0 00192 0 00751 index A B C 这是我的情节代码 trace0 go Bar x d
  • 有没有办法在输入类型=“文本”上禁用“选项卡”?

    是否有跨浏览器解决方案来禁用输入类型 文本 上的 选项卡
  • 使 ASP.NET MVC Route Id 参数成为必需

    我有这条路线 routes MapRoute PlaceDetails controller action id new controller Place action Details id UrlParameter Optional 这路