什么时候我需要在RouteConfig.cs中注册路由?净MVC



当使用。net MVC构建网站时,我何时需要在RouteConfig.cs?中包含新路由的信息


我看到在RouteConfig.cs文件中有一个预配置和注册的默认路由,如下所示:

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

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

当我创建一个新的控制器时,我看到,没有在RouteConfig.cs中写入任何路由信息,相应的视图在我的浏览器中呈现。

即使在创建了更多的控制器,如testcontroller,我从测试视图访问,仍然没有写任何关于testcontroller的路由,他们的视图呈现正确。

由于这些视图都没有在RouteConfig.cs中编辑任何内容,当我需要在RouteConfig.cs中编写路由信息时,您能给我几个例子吗?

当你想在MVC中做一个'非默认'路由时,RouteConfig存在。正如你所看到的,你的许多ActionResults将通过匹配指定的路由来渲染。最终,你可以创建一个完整的站点,甚至不需要触摸RouteConfig.cs!只有当你开始为用例想要不同的路由时,你可能会发现自己在那里潜水。

一个你可能需要编辑它的例子是,如果你有一个专门用于博客的区域,并且想要做一些事情:

/Blog/Post/1234/my-blog-post

默认情况下,不匹配默认配置。在区域中,默认的路由配置以区域名为前缀,然后遵循通常的标准,如:

/{area}/{controller}/{action}/{id}

我们可以这样写:

context.MapRoute(
                "Blog",
                "Blog/Post/{id}/{name}",
                new { action = "Index",controller="Post" },
                new { id = @"d+" }
            );   

值得注意的是,在新版本的MVC (5起)中,我们可以访问Routing属性,这是一种更容易和更容易的方式来处理跨控制器和动作的路由。

Article: MVC5.1 Features, Attribute Routing.

Article: MVC5 Attribute Routing via David Hayden


ASP中路由的附加阅读净MVC ASP。. NET MVC路由概述

ASP。. NET典型路由- URL模式

最新更新