gpt4 book ai didi

asp.net-mvc - 如何删除 MVC URL 路由中的 'Details',但保持其他操作不变?

转载 作者:行者123 更新时间:2023-12-02 09:01:17 24 4
gpt4 key购买 nike

我想为具有正常 CRUD 操作的 Controller 设置一条路由,但希望“详细信息”操作不在 URL 中显示“详细信息”。 Stackoverflow 似乎配置了这种类型的路由:

http://stackoverflow.com/questions/999999/
http://stackoverflow.com/questions/ask

使用这个类比,我的路线目前看起来像:

http://stackoverflow.com/questions/Details/999999/

通过添加以下路线,我能够删除详细信息:

routes.MapRoute("Q1", "questions/{id}", 
new { controller = "Questions", action = "Details" });

但是,在 Controller 上拉起其他操作(例如本例中的 /questions/new)会提示无法解析 id。

有没有办法设置路由,这样我就不必手动将所有其他操作(MapRoute“items/create”、“items/delete”等)手动输入到 Global.asax 中。 CS?我本质上想要第二条路线,例如:

routes.MapRoute("Q2", "questions/{action}", 
new { controller = "Questions", action = "Index" });

...并且如果 {id} 匹配整数,则让路由引擎使用路由 Q1;如果它是字符串,则让路由引擎使用 {action} 。这可能吗?

最佳答案

如果您在第一个上设置路由约束,以便 id 字段只能是整数,那么我相信任何其他操作都会落入默认值。

routes.MapRoute("Q1", 
"questions/{id}",
new {controller = "Questions", action = "Details"},
new { id=@"\d+" });

任何其他事情都应该由默认路由处理。所以“questions/3553”会命中这个,但“questions/ask”不会匹配。您可能希望将更具体的路线放在 Global.asax.cs 文件中。

关于asp.net-mvc - 如何删除 MVC URL 路由中的 'Details',但保持其他操作不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001261/

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