gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 4路由- Controller /ID与 Controller / Action /ID

转载 作者:行者123 更新时间:2023-12-03 13:47:57 26 4
gpt4 key购买 nike

我正在尝试将一条路由添加到默认路由,以使两个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}",
defaults: new { controller = "users", action = "Details" }
);


如何结合两个路由配置,以便两个URL都能工作?
很抱歉,SO上已经存在这样的问题,我什么也找不到。

最佳答案

关键是要把更具体的路线放在首位。因此,将“预定”路线放在首位。编辑我想您还需要一个约束,以仅允许数字匹配此路由的“ id”部分。结束编辑

routes.MapRoute(
name: "Book",
url: "books/{id}",
defaults: new { controller = "users", action = "Details" },
constraints: new { id = @"\d+" }
);

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


并确保“ Details”操作中的“ id”参数为int:

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


这样,“ Books”路由将不会捕获 /users/create之类的URL(因为第二个参数必须为数字),因此将进入下一个(“ Default”)路由。

关于asp.net-mvc - ASP.NET MVC 4路由- Controller /ID与 Controller / Action /ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com