MapRoute从url中移除单个动作
本文关键字:单个动 url MapRoute | 更新日期: 2023-09-27 18:16:44
所以我读了一堆答案,但我似乎不能理解我做错了什么。这是我使用的路径
routes.MapRoute("project",
"project/{id}/{slug}",
new { controller = "project", action = "index", id = UrlParameter.Optional, slug = "" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是可行的,但它会使book控制器中的所有其他操作重定向到索引操作。我不想那样,我只想让我的url看起来像http://www.example.com/project/1/awesome-book,这是有效的,但我使用的所有其他操作,从那个页面通过Ajax,被指向索引操作,而不是他们的正确操作。
帮助吗?
可以为id参数添加整数约束。
routes.MapRoute("project",
"project/{id}/{slug}",
new { controller = "project", action = "index", id = UrlParameter.Optional, slug = "" },
new { id = @"'d+"});
该路由对id参数有约束。它是一个简单的正则表达式,用于检查id参数是否为整数。由于该路由位于默认路由之上,因此将首先对其进行检查。http://www.example.com/project/1/awesome-book将被映射到索引操作。但是当您尝试访问其他操作时,您的第二段将包含一个操作名称。由于操作名不是整数,请求将由默认路由解析。