2016-02-26 35 views
1

我在控制器TasksControllerTasksGridViewController中定義了mvc操作。如果調用URL Tasks/IndexTasks/GridView,MVC應該在TasksGridViewController中查找動作,對於所有其他動作,應該使用TasksController如何將某些操作重定向到mvc路由中的另一個控制器?

我嘗試了動作Index以下路線,但它不工作:

routes.MapRoute(
    name: "GridViewController/Index", 
    url: "{controller}/Index", 
    defaults: new 
    { 
     controller = "{controller}GridView", 
     action = "Index" 
    }); 

什麼我錯在這裏做什麼?謝謝你的幫助。

回答

1

你可以定義這些2條具體路線默認路由:

routes.MapRoute(
    name: "GridViewController_Index_Action", 
    url: "Tasks/Index", 
    defaults: new 
    { 
     controller = "TasksGridView", 
     action = "Index" 
    } 
); 

routes.MapRoute(
    name: "GridViewController_GridView_Action", 
    url: "Tasks/GridView", 
    defaults: new 
    { 
     controller = "TasksGridView", 
     action = "GridView" 
    } 
); 

// Now comes the default route: 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = "" } 
); 
+0

在您的解決方案,您已刪除{}控制器的佔位符,這是不是我的意思。我有幾個控制器具有與SomeNameName.cs和{SomeName} GridView.cs相同的模式。對於所有這些控制器,Index和GridView操作應該重定向到{SomeName} GridViewController.cs。如果我不使用{controller}佔位符,它可以工作,但我不想定義幾十條路線。我想定義一個可以使用當前控制器名稱的路由(例如{controller})。 – froggy

+0

哦,在這種情況下,您可能需要編寫自定義路線。 –

相關問題