我目前在我的项目中有2个控制器。我的导航栏使用@ Html.ActionLinks,我有一个actionlink来选择动作和控制器。由于某些原因,操作是正确的,但并非总是选择控制器。所以我猜这与我的roureconfig有关吗?我一直在尝试让它选择正确的控制器,或者让它选择{controller} / {action}之一,但是我还是没有运气 我有一个PartsController和OrderStatusController。当我单击部件动作链接时,它们都起作用,但是当我单击订单状态动作链接时,它变为“部件”,“ OrderIndex”,甚至我专门说“ OrderStatus”,“ OrderIndex”,但这里有些原因我尝试过的配置?
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { controller., action = "Index", id = UrlParameter.Optional }
//);
// OrderStatus/{action}/{id}
//routes.MapRoute(
// name: "OrderStatus",
// url: "{OrderStatus}/{action}/{id}",
// defaults: new { controller = "OrderStatus", action = "OrderIndex", id = UrlParameter.Optional }
//);
//// Parts/Index
//routes.MapRoute(
// name: "Parts_Index",
// url: "{Parts}/{Index}/{id}",
// defaults: new { controller = "Parts", action = "Index", id = UrlParameter.Optional }
//);
// Parts/Index (Home Page)
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Parts", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:0)
像这样配置您的OrderStatus路线:
routes.MapRoute(
name: "OrderStatus",
url: "{controller}/{action}/{id}",
defaults: new { controller = "OrderStatus", action = "Index"}
);
它必须位于默认路由之上,因为MVC框架会评估从上到下的路由(这里的顺序很重要),这也是为什么尝试订购状态时进入“零件”视图的原因。