当我需要在RouteConfig.cs ASP.Net MVC中注册路由时

Mou*_*Mou 1 asp.net-mvc-4

我正在学习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 }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我创建一些控制器,就像一个,testcontroller and test view但不要写任何关于作为测试控制器的路线,但看到视图渲染正确.

所以给我一些例子,比如我需要写一个路由信息RouteConfig.cs.谢谢

Jon*_*onE 8

当您想在MVC中执行"非默认"路由时,RouteConfig存在.如您所见,许多ActionResults将通过匹配那里指定的路由来呈现.最终,您可以创建一个完整的站点,甚至不必触及RouteConfig.cs!只有当你开始想要不同的用途路线时,你可能会发现自己潜入那里.

您可能需要编辑它的一个示例是,如果您有一个区域专门用于博客,并希望按照以下方式执行某些操作:

/Blog/Post/1234/my-blog-post
Run Code Online (Sandbox Code Playgroud)

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

/{area}/{controller}/{action}/{id}
Run Code Online (Sandbox Code Playgroud)

为了覆盖它,我们可以编写以下内容:

context.MapRoute(
                "Blog",
                "Blog/Post/{id}/{name}",
                new { action = "Index",controller="Post" },
                new { id = @"\d+" }
            );   
Run Code Online (Sandbox Code Playgroud)

值得注意的是,在较新版本的MVC中(5级以上))中,我们可以访问Routing属性,这是一种更简单,更易于访问的方式来处理跨控制器和操作的路由.

文章:MVC5.1特性,属性路由..

文章:通过David Hayden的MVC5属性路由


ASP.NET MVC ASP.NET MVC路由概述中的路由附加读取

ASP.NET典型路由 - URL模式