ASP.NET Core MVC允许通过路由模板中指定的参数向控制器方法传递参数。例如,我们定义了以下路由模板:
routes.MapRoute(
name: "myRoute",
template: "{controller}/{action}/{id}/{name}");
在路由模板中指定了id和name两个参数,我们可以使用以下方法向控制器方法传递它们:
public IActionResult MyAction(int id, string name)
{
// do something with id and name
return View();
}
在控制器方法中可以直接访问这两个参数。
除此之外,我们也可以使用ASP.NET Core MVC提供的[FromBody]和[FromQuery]属性来指定参数来自请求的body还是querystring。例如:
public IActionResult MyAction([FromQuery]int id, [FromBody]string name)
{
// do something with id and name
return View();
}
以上代码中,id参数来自请求querystring,name参数来自请求body。
需要注意的是,当使用[FromBody]属性时,参数类型必须是可序列化的,例如JSON或XML格式。
带参数的请求可以使用以下方式进行测试:
http://localhost:5000/MyController/MyAction/123/myName?myparam=value
在以上请求中,id参数为123,name参数为myName,myparam参数为value。