2014-04-15 104 views
0

我想要当URL只包含一个控制器(无动作)它会自动瞄准输入的控制器的索引动作。但是,我仍然希望默认路由是页面中的登录。如何根据控制器名称路由URL只在ASP.NET MVC

缺省路由是:

routes.MapRoute(
       name: "Primary", 
       url: "{controller}/{action}/{id}", 
       defaults: new {controller = "Account", action = "SignIn", id = UrlParameter.Optional} 
       ); 

应的第二条路线是什么样的?所以mydomain.com/Account应该去Controller = Account,Action = Index,同时保持domain/controller/action/params的正常结构不变。

谢谢!

回答

1
routes.MapRoute(
name: "Default", 
url: "ApplicantProfile/{action}/{id}", 
defaults: new { controller = "ApplicantProfile", action = "Start", id = UrlParameter.Optional } 
); 


routes.MapRoute(
name: "Default", 
url: "{controller}/{action}/{id}", 
defaults: new { action = "Index", id = UrlParameter.Optional } 
); 

假设你有ApplicantProfileController,HomeController中和OtherController,这将导致:

/ApplicantProfile → ApplicantProfileController.Start 
/Other → OtherController.Index 
/SomeOtherPath → default 404 error page 
/→ default 404 error page 

的介绍,路由见。这有点旧,但它很好地涵盖了基础知识。

路由从上到下发生,意思是它停在路由表的第一个匹配处。在第一种情况下,您将首先匹配您的ApplicantProfile路线,以便使用控制器。第二种情况是从路径中获取其他,找到匹配的控制器并使用它。最后2个没有找到匹配的控制器,并且没有指定默认值,因此返回了默认的404错误。我建议在错误中加入适当的处理程序。在这里和这里看到答案。

+0

routes.MapRoute( 名: “ControllerOnly”, URL: “{}控制器”, 的默认值:新{行动= “索引”,ID = UrlParameter.Optional} ); routes.MapRoute( name:“Default”, url:“{controller}/{action}/{id}”, 默认值:new {controller =“Account”,action =“SignIn”,id = UrlParameter .Optional} ); – user2713516

+0

以上是最终工作的路由:) thx – user2713516

+0

表示它是否对您有帮助... –

相关问题