nii*_*ico 3 c# asp.net-mvc asp.net-routing asp.net-mvc-routing
我有这条路线:
routes.MapRoute(
"PlaceDetails",
"{controller}/{action}/{id}",
new { controller = "Place", action = "Details", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
这路由很好:mysite.com/place/details/123
使Id 123可用于场所控制器的详细操作 - 然后可以查找位置'123'.
但是 - 此URL也会传递给控制器:mysite.com/place/details/
我希望它返回HttpNotFound- 但它向控制器发送一个空的Id - 并要求我处理它.
如果路由本身实现了这一点,而不是在控制器本身中需要不合理的空检查,那似乎更整洁.
我在谷歌没有发现这个具体问题.
我怎样才能做到这一点?
要创建id所需的值,您不能将其设置为UrlParameter.Optional或提供任何其他默认值.如果URL段中没有值,并且没有默认值,则路由将与请求不匹配.
routes.MapRoute(
"PlaceDetails",
"{controller}/{action}/{id}",
new { controller = "Place", action = "Details" }
);
Run Code Online (Sandbox Code Playgroud)
但是你可能还需要以另一种方式限制路由,以防止它在不应该匹配的情况下进行匹配.
routes.MapRoute(
"PlaceDetails",
"Place/{action}/{id}",
new { controller = "Place", action = "Details" }
);
Run Code Online (Sandbox Code Playgroud)
请参阅为什么在asp.net mvc中的常用路由之前首先映射特殊路由?有关详细信息和其他选项.
| 归档时间: |
|
| 查看次数: |
7137 次 |
| 最近记录: |