首页 > 解决方案 > Endpoints.MapControllerRoute 模式含义

问题描述

在这样的模式中分配控制器名称和动作名称有什么用

endpoints.MapControllerRoute(
                name:"default",
                pattern: "{controller=home}/{action=index}/{id?}"
                );

标签: c#asp.net-core

解决方案


像这样的图案

"{controller=home}/{action=index}/{id?}"

告诉 ASP.NET Core 如果 URL 以路径结尾/MyController/MyAction/MyId123,它应该将请求分派给MyAction控制器内部的方法MyController。该方法可能如下所示:

public class MyController {
    public IActionResult MyAction(string id) {
        // ...
    }
}

现在,通过添加=homeand =index,您给它一个默认值,并有效地将所有未映射到现有控制器和操作的请求与HomeController:Index方法匹配。

文档

路线模板"{controller=Home}/{action=Index}/{id?}"

  • 匹配一个 URL 路径,如/Products/Details/5

  • 通过标记路径来提取路由值{ controller = Products, action = Details, id = 5 }ProductsController如果应用程序有一个名为的控制器和一个Details动作,那么路由值的提取会导致匹配 :

    public class ProductsController : Controller {
        public IActionResult Details(int id)
        {
            return ControllerContext.MyDisplayRouteInfo(id);
        } 
    } 
    
  • {controller=Home}定义Home为默认控制器。

  • {action=Index}定义Index为默认操作。

  • 中的?字符{id?}定义id为可选。


推荐阅读