flutter 向ASP.NETWeb控制器发送查询参数中的对象列表

r7xajy2e  于 2023-05-18  发布在  Flutter
关注(0)|答案(1)|浏览(142)

当asp.net我试图将discriminatorTags查询参数作为一个列表发送时,为什么它会以空列表的形式进入我的www.example.com web控制器,这是否清楚?

[HttpGet("searchall")]
[EnableCors("MyPolicy")]
public ActionResult<IEnumerable<VgnItmEstSearchDto>> SearchAll(
    [FromQuery(Name = "searchterm")] string searchTerm = "",
    [FromQuery(Name = "currentpage")] int pageNumber = 1,
    [FromQuery(Name = "pagesize")] int pageSize = 6,
    [FromQuery(Name = "hasEst")] bool hasEst = true,
    [FromQuery(Name = "discriminatorTags")] List<DiscriminatorTags> discriminatorTags = null
    )
{
    var results = service.SearchAll(searchTerm, pageNumber, pageSize, hasEst, discriminatorTags);
    return Ok(results);
}

它正在发送这个url请求(抱歉它不让我复制粘贴它),所以我猜问题在这里(这里的discriminatorTags url编码应该如何格式化?)):

这是我想发送的C#结构列表:

public struct DiscriminatorTags : IDiscriminatorTags
{
    public DiscriminatorTags(List<int> tags, string discriminator, bool selected)
    {
        this.Tags = tags;
        this.Discriminator = discriminator;
        this.Selected = selected;
    }

    [Required]
    public List<int> Tags { get; set; }
    [Required]
    public string Discriminator { get; set; }
    [Required]
    public bool Selected { get; set; }
}

我运行swagger(我无法获得任何swagger API请求工作,它说要么是CORS问题要么是网络故障),生成的URL为这个Web请求:
http://localhost:5002/AllVgnItmEsts/searchall?currentpage=1&pagesize=6&hasEst=true&discriminatorTags=%7B%0A%20%20%22tags%22%3A%20%5B%0A%20%20%20%201%0A%20%20%5D%2C%0A%20%20%22discriminator%22%3A%20%22RestaurantItm%22%2C%0A%20%20%22selected%22%3A%20true%0A%7D
当我将“discriminatorTags”部分粘贴到我的API请求url中时,discriminatorTags仍然作为一个空列表进入我的web控制器。

8xiog9wr

8xiog9wr1#

在ASP.NET中,无法直接从查询参数中绑定对象列表。但是,您可以通过使用自定义模型绑定器或手动解析和绑定数据来实现类似的功能。

相关问题