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

这将使第一条路线工作:

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

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

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

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

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

@H_301_18@

解决方法

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

routes.MapRoute(
    name: "Default",id = UrlParameter.Optional }
);

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

// "users" controller
public ActionResult books(int id)
{
    // ...
}

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

@H_301_18@ @H_301_18@ 原文链接:https://www.f2er.com/aspnet/250837.html

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