具有默认动作和参数的MVC路由,控制器的几个动作

fre*_*ed_ 0 c# asp.net-mvc routes asp.net-mvc-3

我想尝试这样的路线:

http://mysite.com/portfolio/landscape

http://mysite.com/portfolio/friends等...

所以我写道:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "DefaultIndex", // Route name
                "{controller}/{id}", // URL with parameters
                new { action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }
Run Code Online (Sandbox Code Playgroud)

它运作良好我可以拥有我的路线/投资组合/景观,但我的帐户控制器具有SignIn,SignOut,Index操作不起作用,因为它每次都被重定向到Index.

有可能同时获得两者吗?

提前谢谢你

Ufu*_*arı 5

尝试在自定义路由中引入约束,否则将不允许找到默认路由.

        routes.MapRoute(
            "DefaultIndex", // Route name
            "portfolio/{id}", // URL with parameters
            new { controller="portfolio", action = "Index", id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

这样,您只能在路线中映射以"portfolio"开头的URL,并指定哪个控制器和操作.其他URL的请求由默认路由处理.