asp.net-mvc – ASP.NET MVC 4路由 – controller / id与controller / action / id

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC 4路由 – controller / id与controller / action / id前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图添加一个路由到默认路由,所以我有两个url工作:

> http://www.mywebsite.com/users/create
> http://www.mywebsite.com/users/1

这将使第一条路线工作:

  1. routes.MapRoute(
  2. name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "users",action = "Index",id = UrlParameter.Optional }
  3. );

但是,第二条路线不会明显.

这将使第二条路线工作,但将打破第一条路线:

  1. routes.MapRoute(
  2. name: "Book",url: "books/{id}",action = "Details" }
  3. );

如何组合两个路由配置,使两个URL工作?
如果在SO上已经有这样的问题,我很抱歉,我找不到任何东西.

解决方法

关键是要先提出更具体的路线.所以把“书”的路线放在第一位.编辑我想你还需要一个约束,只允许数字匹配此路由的“id”部分.结束编辑
  1. routes.MapRoute(
  2. name: "Book",action = "Details" },constraints: new { id = @"\d+" }
  3. );
  4.  
  5. routes.MapRoute(
  6. name: "Default",id = UrlParameter.Optional }
  7. );

并确保您的“详细信息”操作中的“id”参数是一个int:

  1. // "users" controller
  2. public ActionResult books(int id)
  3. {
  4. // ...
  5. }

这样,“图书”路线将不会捕获像/ users / create这样的网址(由于第二个参数被重新定义为一个数字),所以将会落在下一个(“默认”)路由.

猜你在找的asp.Net相关文章