2015-09-03 66 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:感谢所有真正献出宝贵时间的人。

相关问题