ASP.NET MVC4路由-使用不同路由的具有相同名称的访问控制器和操作



NET MVC4路由:

如果我想为站点的主要部分设置默认路由配置:

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

然后是另一个路由配置,类似于以下内容:

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

注意url中的字符串"FOO/"(就在/{controller...

之前)

例如,我希望能够访问我的网站的主要部分使用如下的url

http://dummyurl.com/bar/1

但是访问控制器和动作有相同的名字如果我使用

http://dummyurl.com/**FOO**/bar/1

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

该路由将导致您可能意想不到的结果,除非您有一个名为FOO 的mvc区域。该路由只适用于http://yourdomain/foo/foo/any_method_in_foo/id

通过查看"the Gu"的路由文档,我发现我只需要放入:

    routes.MapRoute(
        name: "FOO",
        url: "FOO/{controller}/{action}/{id}",
        defaults: new { controller = "FOO", action = "bar", id = UrlParameter.Optional }
    );
上面的

:

     routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
在我的Routes.config和blammo中

,可以开始了。我现在可以在我的项目中分离和访问例如Admin("FOO")部分。

最新更新