【发布时间】:2011-04-15 22:39:01
【问题描述】:
我有一个控制器,它有一个名为 RedirectLogin 的操作,它基本上设置了一个 TempData var,以便在登录完成时重定向回。
在此之后,它只是调用:
return RedirectToRoute("Login");
但是,当它重定向时,它会转到 /login/RedirectLogin - 由于某种原因,它正在添加调用操作的名称。我认为它应该只是返回默认值,而不是添加动作,尤其是不属于目标控制器的动作。
如果我打电话:
return RedirectToRoute("Login", new { action = "Index" });
然后它正确地创建路径 /login,但同样,它不应该在默认情况下这样做,没有额外的位?
我有一个稍微不标准的路由设置。基本上我正在为我的客户创建虚拟子文件夹,所以 www.domain.com/clienturl 但我仍然希望 www.domain.com/join 或 www.domain.com/about 重定向到非客户端数据。我通过直接在路径中添加控制器的名称来做到这一点,并将其添加到更通用的称为 Landing 的名称之前。这可能是问题所在,还是有更好的方法:)
// Root paths
routes.MapRoute("About", "about", new { controller = "Home", action = "About" });
routes.MapRoute("Info", "info", new { controller = "Home", action = "Info" });
routes.MapRoute("Privacy", "privacy", new { controller = "Home", action = "Privacy" });
routes.MapRoute("Terms", "terms", new { controller = "Home", action = "Terms" });
// Root controllers
routes.MapRoute("Join", "join/{action}/{id}", new { controller = "join", action = "Index", id = UrlParameter.Optional });
routes.MapRoute("Login", "login/{action}/{id}", new { controller = "login", action = "Index", id = UrlParameter.Optional });
routes.MapRoute("Account", "account/{action}/{id}", new { controller = "account", action = "Index", id = UrlParameter.Optional });
routes.MapRoute("Goodbye", "goodbye/{action}/{id}", new { controller = "goodbye", action = "Index", id = UrlParameter.Optional });
// Organization
routes.MapRoute("Landing", "{organization}/{controller}/{action}/{id}", new { controller = "Landing", action = "Index", id = UrlParameter.Optional });
// Default
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
【问题讨论】: