ASP.NET Core应用程序编程开发中如何从querystring中获取参数和对应参数值?

ASP.NET Core 作者: Rector 311 次阅读 · 读完约需 2 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

当我们在使用ASP.NET Core创建Web应用程序或者RESTful API接口应用程序的时候,接收客户端的参数是经常需要处理的问题,ASP.NET Core接口控制器根据接收到的请求参数作对应的处理,然后返回客户端需要的数据。

那么,在ASP.NET Core Web应用程序或者ASP.NET Core Web API应用程序开发时,如何从querystring中获取参数和对应的参数值呢?

方案一

ASP.NET Core可以根据匹配的路由自动绑定表单值、路由值和查询字符串,所以,在ASP.NET Core中最简单的获取参数的方式为:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet("{id:int?}")]
    public IActionResult Find(int id)
    {
        return Ok(new { data = id });
    }
}

对应的请求路径为:

http://localhost:58112/api/order/find/1

输出结果为:

{"data":1}

如果有两个参数,则在对应的Action方法中添加参数名即可,如:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet("{id:int?}/{uid:int?}")]
    public IActionResult Find(int id,int? uid)
    {
        return Ok(new { data = id ,uid});
    }
}

对应的请求路径为:

http://localhost:58112/api/order/find/1/2

输出结果为:

{"data":1,"uid":2}

方案二

使用Request.Query['参数名']方式从请求地址中获取,如下:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet]
    public IActionResult Find()
    {
        var id = Request.Query["id"];
        return Ok(new { data = id });
    }
}

对应的请求路径为:

http://localhost:58112/api/order/find/?id=1

输出结果为:

{"data":["1"]}

方案三

使用[FromQuery]将指定的参数名和querystring进行绑定,如下:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet]
    public IActionResult Find([FromQuery(Name ="id")] int id)
    {
        return Ok(new { data = id });
    }
}

对应的请求路径为:

http://localhost:58112/api/order/find/?id=1

输出结果为:

{"data":1}

如果要绑定多个参数,则如下:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet]
    public IActionResult Find([FromQuery(Name ="id")] int id, [FromQuery(Name = "page")] int page)
    {
        return Ok(new { data = id,page });
    }
}

对应的请求路径为:

http://localhost:58112/api/order/find/?id=1&page=2

输出结果为:

{"data":1,"page":2}

方案四

如果你的请求参数比较多,为了方便管理和使用,建议创建一个查询参数的实体类,如:

[Route("api/[controller]/[action]")]
[ApiController]
public class OrderController : ControllerBase
{
    [HttpGet]
    public IActionResult Find([FromQuery] QueryModel query)
    {
        return Ok(new { query });
    }
}

public class QueryModel
{
    public int Id { get; set; }
    public int Page { get; set; }
}

对应的请求路径为:

http://localhost:58112/api/order/find/?id=1&page=2

输出结果为:

{"data":1,"page":2}

阅读了该文章的人还浏览了...

本文永久链接码友网 » ASP.NET Core应用程序编程开发中如何从querystring中获取参数和对应参数值?

发布于: 2019-06-28 15:14:06
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册