这取决于。在 ASP.Net Core 中,路由可以配置为常规路由或属性路由。
常规路由配置如下:
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
这里,第一个路径段映射到控制器名称,
第二个映射到动作名称,
第三段用于映射到模型实体的可选 id。
按照惯例,控制器文件名通常与控制器类名相同。
因此,在常规路由中,url 将与文件名匹配。
URL http://localhost/Products/Index 与 ProductsController 中的以下操作方法匹配。
[Route("[controller]")]
public class ProductsController : Controller
{
[HttpPost("Index")] // Matches 'Products/Index'
public IActionResult Index()
{
return View();
}
}
属性路由
使用属性路由,控制器名称和动作名称在选择动作时不起任何作用。
因此,它与文件名无关。
URL http://localhost/Items/All 与 ProductsController 中的以下操作方法匹配。
public class ProductsController : Controller
{
[Route("Items/All")]
public IActionResult Index()
{
return View();
}
}
同样,[Route] 属性可以在 Controller 和 action 方法中添加。相同的 URL http://localhost/Items/All 匹配如下所示的操作方法:
[Route("Items")]
public class ProductsController : Controller
{
[Route("All")]
public IActionResult Index()
{
return View();
}
}
有关更多详细信息,您可以参考微软文档https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1