为什么我打电话:
http://localhost:55058/support/Faqs
我明白了:
http://localhost:55058/Products/Faqs/Faq
使用以下RegisterRoutes实现?我怎么才能得到:
http://localhost:55058/Support/Faqs/Faq
感谢。
public class SupportController : Controller
{
public ActionResult FAQs()
{
return RedirectToAction("Faq", "Faqs");
}
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{filename}.html|js|css|gif|jpg|jpeg|png|swf");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.html/{*pathInfo}");
routes.MapRoute(
"Products", // Route name
"Products/{controller}/{action}", // URL with parameters
new { controller = "ProductName", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Support", // Route name
"Support/{controller}/{action}", // URL with parameters
new { controller = "Support", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
答案 0 :(得分:2)
没有更多的数据很难说 - 但看起来你有点尝试使用区域,但实际上并没有使用区域?
正在发生的事情是RedirectToAction("Faq", "Faqs")
与您的所有路线相匹配 - 所以它会选择第一个路线,在这种情况下为Products
。
"Products/{controller}/{action}"
和"Support/{controller}/{action}"
路线之间有什么区别?他们来自不同的地方吗?您将它们发送到同一个控制器,不管URL的起点是什么,都会发生相同的操作 - 这看起来很混乱。
如果转到/ products / ...您应该获得与/ support / ...不同的结果,您应该查看MVC Areas。
如果他们应该得到相同的结果这就是你现在所拥有的 - 也许你应该考虑删除这些网址并使用默认值?
以下是有关领域的其他资源:
编辑来自您的评论:
路由:http://localhost:55058/Products/ProductName/Download
像这样更新您的路线:
routes.MapRoute(
"Products", // Route name
"Products/ProductName/{action}", // URL with parameters
new { controller = "ProductName", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Support", // Route name
"Support/{controller}/{action}", // URL with parameters
new { controller = "Support", action = "Index" } // Parameter defaults
);