2014-07-13 21 views
0

我正在嘗試設置索引頁面路由。它的工作原理是這樣的:T4MVC MapRoute不起作用?

routes.MapRoute("", "", new {controller = "Home", action = "Index"}) 

,但如果我T4MVC替換爲:

routes.MapRoute("", "", MVC.Home.Index()); 

不知它不工作(我得到一個「的資源不能找到」錯誤)。似乎我做了數百萬次,它工作。那麼我做錯了什麼?

更新。

我使用Route Debugger,發現ASP.NET MVC路由和T4MVC路由的區別在於T4MVC增加了Area =「」,而ASP.NET MVC沒有(它只保留了控制器和操作)。

回答

0

請注意,MVC.Home.Index()如果你想獲得的動作和控制器的名稱返回的ActionResult

,你必須寫:

MVC.Home.Index()GetT4MVCResult( 。).Controller - 控制器 MVC.Home.Index()的名稱GetT4MVCResult()動作 - 動作的名稱

編輯:

routes.MapRoute("", "", new {controller = MVC.Home.Index().GetT4MVCResult().Controller, action = MVC.Home.Index().GetT4MVCResult().Action}) 
+0

爲什麼它「不太好」。如果我重命名控制器或操作,該怎麼辦? – SiberianGuy

+0

我無法找到我們遇到問題的地方,但在任何地方您都可以嘗試。 (可能是mvc 3左右,在mvc 4和5中它已經固定) –

+2

有關相關討論,請參閱https://mvccontrib.codeplex.com/workitem/7154。 –

1

更新(2014年7月15日):作爲解決方法,我認爲您需要爲項目添加一個虛擬區域,例如

  • 右鍵單擊項目,然後選擇添加/區域。將它命名爲「假」(或其他)
  • 您可以在那裏刪除一切除DummyAreaRegistration.cs文件

原來的答覆:

如果你去定義'你的電話MapRoute,你能檢查它是否確實進入T4MVC超載?請注意,如果您位於某個區域,則需要撥打MapRouteArea來代替。

+0

它轉到T4Extensions.cs,我不使用區域 – SiberianGuy

+0

添加了更多詳細信息 – SiberianGuy

+0

好吧,看我更新的答案。 –