我正在尝试重定向到RecomController中的路由,并且操作是Index,我已经在RouteConfig文件中定义了路径,并且还指定了我调用RedirectToRoute函数时传递的id参数。由于某种原因,它找不到该路径。
我还在RecomController Index动作上方创建了Route属性,但是它仍然无法将我导航到该路径。我想念什么吗?
RouteConfig.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Recomroute",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Recom", action = "Index", id = UrlParameter.Optional }
);
}
RecomController.cs:
[Route("Recom/Index")]
public ActionResult Index(int id)
{
............//Functioning
}
调用该功能(在另一个控制器中):
ProjectController.cs:
return RedirectToRoute("Recom/Index/{id}", new {id = projectdto.Id });
答案 0 :(得分:0)
听起来像您在RedirectToRoute()
中使用了错误的路线名称或路径,因此它不起作用:
// this is wrong because first parameter did not match
return RedirectToRoute("Recom/Index/{id}", new {id = projectdto.Id });
对于两个参数重载,它需要路由名称(而不是路由路径)和路由值,如下定义所示:
protected internal RedirectToRouteResult RedirectToRoute(string routeName,
RouteValueDictionary routeValues)
因此,您需要提供完整的路由名称和在RegisterRoutes
中定义的路由值(例如Recomroute
)。
return RedirectToRoute("Recomroute", new {
controller = "Recom",
action = "Index",
id = projectdto.Id
});
旁注:
1)您仍然需要提供controller
,action
和id
参数以匹配路由定义。
2)Recomroute
似乎是在默认路由下定义的,具有相同的路由段定义,它将覆盖其下的所有自定义路由,如果您要评估Recomroute
,请先将其移至最高位置并使用其他路径违反默认路由。