2015-09-03 88 views
2

我正在使用mvc beta6,並且我想擁有動態控制器。 現在我只創建了兩個控制器Home和Dynamic。 所以默認的路由是控制器/操作,並且它運行良好,直到mvc 5 即使我們在瀏覽器url中輸入xyz/someaction。 但在mvc 6的情況下,它不會觸發defaultcontroller工廠並給出http錯誤404.因爲該im無法作爲瀏覽器中的用戶類型路由到動態控制器。 這是我開始了代碼..HTTP錯誤404.0 - 未在Mvc中找到6 Asp.net 5

 public void Configure(IApplicationBuilder app) 
      { 

       //app.UseMvc(); 
       //// app.UseMvcWithDefaultRoute(); 
       app.UseMvc(routes => 
       { 
        /// routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}"); 
        routes.MapRoute("defaultRoute", 
         "{controller}/{action}/{id?}", 
         defaults: new { controller = "Home", action = "Index" }); 
       }); 
} 

我想路由只登記時間。如果編譯我是錯的過程中應用存在實際控制人,那麼請告訴我有關動態路由。

+0

可以這篇文章有任何幫助嗎? http://forums.asp.net/t/2013033.aspx?Manually+instantiate+a+Controller+in+MVC+6+alpha4 –

回答

-2

我想你應該嘗試以下方式

   routes.MapRoute(
       name: "default", 
       template: "{controller}/{action}/{id?}", 
       defaults: new { controller = "Home", action = "Index" }); 

你也可以去我的博客上的文章與"Routing in MVC"

+1

這正是OP已經在使用的(除了路由名稱,這是不相關的,以及不需要的命名參數)。不要垃圾你的博客。 – CodeCaster

+0

我認爲他沒有定期路由問題,他說它在MVC5上運行良好。他們的問題是MVC 6和它引入的新聞,特別是在他的特例中。 –

+0

在這裏我添加了額外的屬性模板:「{controller}/{action}/{id?}」,我在beta6中使用,它正在工作。 –

0

我已經得到了解決方案,用於查找控制器的我problem.The方式在mvc 6中,所有控制器類型在編譯期間被發現並通過DI框架緩存,並且路由僅被註冊到那些緩存的控制器。所以系統不會調用任何工廠方法,除非它找到請求的控制器。 :) 就是這樣! ps:感謝所有真正獻出寶貴時間的人。

相關問題