在ASP.NET核心MVC中,控制器通过路由和参数来确定要调用的方法。路由指定了处理请求的控制器和动作方法的规则。在ASP.NET核心MVC中,可以通过以下两种方法来定义路由:
[Route]
特性在控制器或动作方法上指定路由模板,例如:[Route("api/[controller]")]
public class MyController : Controller
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
// 执行对应的动作方法
return Ok();
}
}
在上述示例中,控制器类上的[Route("api/[controller]")]
特性指定了控制器的路由模板。[HttpGet("{id}")]
特性指定了Get
动作方法的路由模板。
Startup.cs
文件的ConfigureServices
方法中配置路由约定,例如:services.AddMvc(options =>
{
options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
在上述示例中,通过AddMvc
方法的options
参数配置了一个路由约定。该路由约定使用SlugifyParameterTransformer
来转换路由参数的格式。
无论是属性路由还是约定路由,当收到请求时,ASP.NET核心MVC会根据路由模板匹配请求的URL,并确定要调用的控制器和动作方法。匹配的过程依赖于请求的HTTP方法和URL参数。如果找到匹配的控制器和动作方法,则会调用该方法并返回结果。
至于参数名的匹配,在ASP.NET核心MVC中,会使用参数名称和URL中的路由参数进行匹配。例如,如果URL中包含id
参数,则会将其传递给控制器动作方法中的id
参数。
总结起来,在ASP.NET核心MVC中,控制器通过路由和参数名来找到要调用的方法。路由定义了请求的URL和对应的控制器和动作方法,而参数名匹配则是根据请求的URL中的路由参数进行的。这样就可以确保使用相同的参数和方法名时,控制器能够正确地找到要调用的方法。
领取专属 10元无门槛券
手把手带您无忧上云