【发布时间】:2009-06-16 12:45:52
【问题描述】:
我想为具有正常 CRUD 操作的控制器设置路由,但希望详细信息操作不在 URL 中显示“详细信息”。 Stackoverflow 似乎配置了这种类型的路由:
http://stackoverflow.com/questions/999999/
http://stackoverflow.com/questions/ask
使用这个类比,我的路线目前看起来像:
http://stackoverflow.com/questions/Details/999999/
通过添加以下路线,我能够删除 Details:
routes.MapRoute("Q1", "questions/{id}",
new { controller = "Questions", action = "Details" });
但是,在控制器上调用其他操作(例如,此示例中的 /questions/new)抱怨无法解析 id。
有没有办法设置路线,这样我就不必手动将所有其他操作(MapRoute“项目/创建”、“项目/删除”等)手动输入到 Global.asax 中。 CS?我基本上希望有第二条路线,例如:
routes.MapRoute("Q2", "questions/{action}",
new { controller = "Questions", action = "Index" });
...如果{id} 匹配一个整数,让路由引擎使用路由Q1,如果它是一个字符串,则使用{action}。这可能吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-routing