当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控制器。
1条答案
按热度按时间8xiog9wr1#
在ASP.NET中,无法直接从查询参数中绑定对象列表。但是,您可以通过使用自定义模型绑定器或手动解析和绑定数据来实现类似的功能。