asp.net-mvc-4 - 我什么时候需要在 RouteConfig.cs ASP.Net MVC 中注册路由?

标签 asp.net-mvc-4 routes

使用 .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 }
        );
    }
}
当我创建一个新的 Controller 时,我看到了,没有在 RouteConfig.cs 中写入任何路由信息,相应的 View 在我的浏览器中呈现。
即使在创建了更多 Controller 之后,例如 testcontroller ,我从测试 View 访问,仍然没有写任何关于 testcontroller 的路由的内容。 ,他们的 View 正确呈现。
由于这些 View 在 RouteConfig.cs 中无需编辑任何内容即可呈现, 能不能举几个例子当我需要在RouteConfig.cs中写入路线信息?

最佳答案

当您想在 MVC 中执行“非默认”路由时,存在 RouteConfig。如您所见,您的许多 ActionResult 将通过匹配那里指定的路由来呈现。最终,您可能能够创建整个站点,甚至不必接触 RouteConfig.cs!只有当您开始想要不同的用例路线时,您才可能发现自己潜入其中。

您可能需要编辑它的一个例子是,如果您有一个 Area专门用于博客,并希望做一些类似的事情:

/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 属性,这是一种更简单、更易于访问的方法来处理跨 Controller 和 Action 的路由。

文章:MVC5.1 Features, Attribute Routing..

文章:MVC5 Attribute Routing via David Hayden

ASP.NET MVC 中路由的附加阅读
ASP.NET MVC Routing Overview

ASP.NET Typical Routing - URL Patterns

关于asp.net-mvc-4 - 我什么时候需要在 RouteConfig.cs ASP.Net MVC 中注册路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440157/

相关文章:

asp.net-mvc-4 - MVC4 bundle 版本控制

jquery - 从特定文件夹动态加载框 slider 中的图像

asp.net-mvc - Kendo 网格以错误格式发送日期

asp.net-mvc-4 - Response.RedirectPermanent();调用后处理代码

ruby-on-rails - 如何在rails 3中的路由中设置默认参数值

ruby - 为什么这些路由从 rake 路由中丢失?

asp.net-mvc-3 - 如何格式化 MVC 路由参数?

c# - Angular $http 错误响应 statusText 始终未定义

node.js - 快速路由将变量传递到所需文件

ruby-on-rails - Rails 缺少模板