【发布时间】:2019-08-09 11:24:01
【问题描述】:
我在这里阅读了所有类似的问题,但我无法提出解决方案。我正在尝试调用 web-api 方法:
[HttpGet]
public SearchViewModel Get(SearchTypes type, string text, [FromUri]Dictionary<string, string> toyParams)
{
//Code here
}
我想从 uri 中获取最后一个参数。我试过了
和
http://localhost:39101/#!/search/toys/fox?toyParams[0].Key=someParameter&toyParams[0].Value=123
但 toyParams Dictionary 始终为空。
【问题讨论】:
-
在 GET 请求中通过 URI 传递字典键/值!!。为什么你要检索的数据没有某种id,这样你就不用在URI中传递这么大的数据了
-
我假设你想符合 GET 请求语义。否则,如果考虑到您正在传递相当多的数据,它是一个通用解决方案,那么您可能需要执行一个好的旧 POST 请求。
-
我认为你做不到。原因是,web api 模型默认模型绑定与名称比较一起使用。例如,如果您有一个名为“toyParams[0].Key”的参数(尽管您不能拥有它。)它将与查询字符串参数“toyParams[0],Key”进行映射,其值为“someParameter”等等上。您也许可以通过自定义模型绑定来实现。但是,请不要这样做。我会等待答案来更新我的知识。
-
这涉及一个 POST 请求,并且数据是作为帖子正文而不是通过 url 发送的。
-
我正在考虑您的参数搜索问题。你必须有你的搜索参数,比如 param1=value1¶m2=value2 等等,对吗?现在您可以创建一个包含属性的类(DTO,数据传输对象),即 param1、param2 及其各自的数据类型。它会填满的!您希望这种方法作为答案吗?
标签: c# asp.net asp.net-web-api