我在尝试在MVC中设置路由时遇到了一些问题。我想我理解它是如何工作的,但我似乎无法设置正确的路径。
基本上我想做类似于StackOverflow的工作方式:
我想要抓住HomeController,点击faq动作并返回faq视图。我似乎无法弄清楚如何做到这一点。
另外,我尝试为这样的事情添加一条新路线:
所以,Boxes是控制器,25显然是id(参数)。与stackoverflow的类似:https://stackoverflow.com/questions/[question数字] / [问题标题]
所以我试着这样做:
routes.MapRoute(
"Boxes",
"Boxes/{boxnumber}",
new {
action="Details", cubenumber = ""
} );
没有成功。
我还要下载Route Tester应用程序,但这似乎没有帮助。最有可能的是我需要真正了解路由的工作原理,但我只是想知道是否有人能够指出我现在正朝着正确的方向前进,而不是让我不得不旋转我的车轮。
非常感谢你们!
答案 0 :(得分:2)
尝试以下方法:
routes.MapRoute(
null, // optional route name
"faq",
new { controller="Home", action="Faq" } );
routes.MapRoute(
null, // optional route name
"Boxes/{boxnumber}",
new { controller="Boxes", action="Details", boxnumber = ""} );
// Original route, if needed, should come AFTER more specialized routes.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } ); // Parameter defaults
可能有助于您更好地理解这一点的一些注意事项:
答案 1 :(得分:1)
定义路线时,它必须至少包含两条信息:控制器和动作。这些值既可以作为参数(即URL模式中的“{parameter}”部分),也可以作为默认值。
您粘贴的路由示例包含一个操作,但它不包含控制器,因此无法满足请求。由于你的控制器名称是“BoxesController”,你可以简单地将“controller ='Boxes'”添加到该路线的默认值,你就会很好。
要实现faq路由,您只需定义一个URL为“faq”并具有默认值的路由:controller =“Home”,action =“Faq”。