将复杂对象传递给.netcore1.1 Webapi虽然查询字符串
我想通过一个复杂的对象,虽然查询字符串,但由于某种原因,它不工作。我有一个复杂的对象,看起来像这样:将复杂对象传递给.netcore1.1 Webapi虽然查询字符串
public class QueryOptions
{
public QueryParameter[] Parameters = new QueryParameter[0];
}
而且我想送的几种方法,但没有什么工作:
我的WebAPI的方法是这样的:
[HttpGet]
[AllowAnonymous]
public async Task<TDTO[]> GetList([FromQuery] QueryOptions queryOptions)
{
return await this._service.GetList(queryOptions);
}
我已经尝试过并且无法使用FromQuery属性。 的网址的查询看起来像这样:
/api/users?Parameters[0].PropertyName=FirstName &参数[0]。价值= GTitzy &参数[0] .FilterCondition = 0
我也试着用开头的对象的名字。发送请求,但queryOptions始终没有参数。
如何通过查询字符串传递这个复杂的对象?
假设
public class QueryParameter {
public string PropertyName { get; set; }
public string Value { get; set; }
public string FilterCondition { get; set; }
}
你需要更新你的模型暴露的公共属性[FromQuery]
知道什么结合。
public class QueryOptions {
public QueryParameter[] Parameters { get; set; }
}
你也应该考虑读Model Binding: Customize model binding behavior with attributes
我忘了让我的课程使用属性! –
@ johnny5你应该考虑寻找一种更简单的方式来传递你的查询选项。国际海事组织这是复杂的事情 – Nkosi
是啊我一直在寻找一个好方法,但最终这样做是因为,这是一般工作的所有我的crud实体,其应用通用筛选和搜索API,我是在我的截止日期前嘎然而止 –
不要。使用body和form.post()。 –
这不会起作用,GET不应该用于发送复杂的对象。这似乎是[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你试图达到的最终目标是什么? – Nkosi
@Nkosi我想要允许基本属性的动态过滤,我试图通过查询选项dto来过滤我的列表。我想使用get,所以你可以在将URL传递给用户时保持URL –