C# 如何在ASP.NET MVC 5中指定特定控制器的路由选项

C# 如何在ASP.NET MVC 5中指定特定控制器的路由选项,c#,.net,asp.net-mvc,asp.net-mvc-5,asp.net-mvc-routing,C#,.net,Asp.net Mvc,Asp.net Mvc 5,Asp.net Mvc Routing,我想从路由中抑制控制器,使用以下方法效果良好: routes.MapRoute( name: "HomePages", url: "{action}", defaults: new { controller = "Home", action = "Index" } ); 问题是,当对不同的控制器(如“帐户”)执行相同操作时,第一个选项仅会生效: routes

我想从路由中抑制控制器,使用以下方法效果良好:

         routes.MapRoute(
            name: "HomePages",
            url: "{action}",
            defaults: new { controller = "Home", action = "Index" }
            );
问题是,当对不同的控制器(如“帐户”)执行相同操作时,第一个选项仅会生效:

            routes.MapRoute(
     name: "LoginRoute",
     url: "{action}",
     defaults: new { controller = "Account", action = "Login" }
     );
我的目标是从路由中隐藏控制器,这样我就可以直接访问mysite.com/login和mysite.com/index,当登录在Account controller下,而index在Home controller下时,如何实现这一点


如何为帐户操作指定第二个选项,并为主操作保留第一个选项?

您是否考虑过使用路由属性,例如:

[Route("{getId:int}")]
public ActionResult Show(int getId) { ... }
您可以将其与旧的布线方式结合使用。您确实需要在配置中显式设置此功能:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

      routes.MapMvcAttributeRoutes();
    }
}

我发现路由属性使得在我的控制器方法上设置好的路由非常容易。这也渗透到web api和RESTFul中

想想你想先实现什么-目前两个匹配完全相同的URL集,第一个匹配将获胜…@AlexeiLevenkov,我想把控制器从路由中隐藏,所以我可以直接访问mysite.com/login和mysite.com/index如何实现登录在
Account
controller下,索引在
Home
controller下?
url:“login”,默认值:new{controller=“Account”,action=“login”}
-如果不需要映射所有操作(确保首先提到更具体的路线)。是否有任何方法可以在控制器级别映射不仅是操作级别,比如说我有许多操作在帐户下,还有许多操作在主页下,我是否应该一个一个地映射到操作级别?换句话说,一个控制器下的所有操作都有一个路线选项,依此类推。