使ASP.NET MVC路由ID参数为必需

尼科

我有这条路线:

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

这样可以很好地进行路由:mysite.com/place/details/123

使Id 123可用于位置控制器的details操作-然后可以查找位置'123'。

但是,此URL也会传递给控制器​​:mysite.com/place/details/

我希望它返回HttpNotFound-但它会向控制器发送一个空ID-并要求我进行处理。

如果路由本身实现了此目的,而不是在控制器本身中进行了看起来似乎不存在的空检查,则似乎更加整洁。

我在Google上没有发现有关此特定问题的任何信息。

我怎样才能做到这一点?

夜猫子888

要获得id所需值,您不得将其设置为UrlParameter.Optional或提供任何其他默认值。如果网址段中没有值,也没有默认值,则路由将与请求不匹配。

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

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

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

请参阅为什么在asp.net mvc中先映射特殊路由,然后再映射普通路由?有关详细信息和其他选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ASP.NET MVC 5中路由可选参数

来自分类Dev

如何在ASP.NET MVC应用程序中为APPS附加sharepoint必需参数?

来自分类Dev

ASP.net MVC路由参数

来自分类Dev

ASP.NET MVC-从类访问路由参数

来自分类Dev

ASP.NET MVC中的区域路由

来自分类Dev

ASP.NET MVC路由到行动

来自分类Dev

ASP.net MVC映像路由

来自分类Dev

ASP.NET MVC和AngularJS路由

来自分类Dev

一个路由参数在ASP.net MVC路由约束上具有多个值

来自分类Dev

带句点的ASP.NET MVC路由值ID

来自分类Dev

Asp.net MVC路由名称,带“-”

来自分类Dev

Asp.net MVC路由问题403.14

来自分类Dev

ASP.NET MVC属性路由

来自分类Dev

ASP.NET MVC 5路由可选参数

来自分类Dev

ASP.NET MVC路由的操作前缀

来自分类Dev

Asp.net核心MVC发布参数始终为null

来自分类Dev

ASP.NET MVC路由与特定操作

来自分类Dev

ASP.NET MVC。如何基于参数禁用必需的验证?

来自分类Dev

一个路由参数在ASP.net MVC路由约束上具有多个值

来自分类Dev

带有句点的ASP.NET MVC路由值ID

来自分类Dev

Asp.net路由参数代理的主键

来自分类Dev

带参数的asp.net mvc路由

来自分类Dev

ASP.net MVC路由

来自分类Dev

使ASP.NET MVC路由ID参数为必需

来自分类Dev

ASP.NET MVC。如何基于参数禁用必需的验证?

来自分类Dev

asp.net mvc路由,以area为参数

来自分类Dev

参数中的 ASP.NET MVC 小写路由

来自分类Dev

忽略 ASP.NET MVC WebAPI 中的路由参数

来自分类Dev

ASP.NET Core 路由空参数