2013-09-25 55 views
1

這是一個非常基本的問題,但我找不到任何清晰,簡單,直接的答案。MVC4多個控制器

我有1個HomeController.cs文件基本MVC4應用。我想創建第二個Controller.cs文件來放置更多的代碼,所以HomeController不會變成意大利麪代碼。

所以很明顯第1步是添加一個新的控制器。我假設下一步是添加一些東西到RouteConfig.cs。

什麼我需要添加到RouteConfig.cs利用新Controller.cs?

+0

將代碼拆分爲兩個文件不會解決意大利麪條代碼問題......如果有的話,它會變得更糟。爲什麼不使用適當的對象定位技術? – JDB

+1

我不認爲他真的想將HomeController分成多個部分。我認爲他只是想將行爲分解成不同的邏輯控制器,而不是將不相關的行爲集中在一個文件中。 –

+0

如果您打算保留模式(控制器/操作/ ID),則無需更改RouteConfig.cs。更多關於路線:http://www.asp.net/mvc/tutorials/controllers-and-routing –

回答

3

你的路線文件是什麼樣的?

通常情況下,有一個缺省路由

routes.MapRoute("default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action="Index" } 
); 

這意味着,只要你添加一個新的控制器與Controller後綴,MVC將確保路由引擎看到你的控制器,並且只要你的URL遵循上述結構,以這種格式發送的請求將被路由到適當的控制器。

5

你不應該添加任何東西。 HomeController需要將RouteConfig中的一行代碼設置爲默認控制器(用於當用戶導航到站點根目錄時),但其他控制器應該可以使用默認路由訪問。

只需創建一個控制器,加一些動作,你應該能夠路由到它的格式Controller/Action或使用路由輔助功能。

0

我們通常將其發送給它提交給不同的控制器不同的看法,或在你的電流控制器添加引用如果只是想打電話給在您目前的家庭控制器的某些方法。

0

你真正需要創建一個新的控制器後,首先是要增加一個新的動作(如果它沒有自動添加),然後添加爲新行動的新景觀。 只有當您要處理某些與您的默認設置不匹配的特定參數時,您才需要觸摸您的路線