C# 如何将字典参数传递给web api方法?
我在这里读过所有类似的问题,但我想不出解决办法。我正在尝试调用web api方法:C# 如何将字典参数传递给web api方法?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我在这里读过所有类似的问题,但我想不出解决办法。我正在尝试调用web api方法: [HttpGet] public SearchViewModel Get(SearchTypes type, string text, [FromUri]Dictionary<string, string> toyParams) { //Code here } [HttpGet] publicsearchViewModelget(SearchTypes类型,字符串文本,[FromUri]字典
[HttpGet]
public SearchViewModel Get(SearchTypes type, string text, [FromUri]Dictionary<string, string> toyParams)
{
//Code here
}
[HttpGet]
publicsearchViewModelget(SearchTypes类型,字符串文本,[FromUri]字典到yparams)
{
//代码在这里
}
我想从uri中获取最后一个参数。我试过了
及
但是toyParams
字典总是空的。一种简单的方法,而不是字典:
//DTO
public class SearchDTO
{
public int MyProperty1 { get; set; }
public int MyProperty2 { get; set; }
public int MyProperty3 { get; set; }
}
其中,MyProperty1
,MyProperty2
,MyProperty3
是必须根据其进行搜索的参数
//GET Method
public string Get([FromUri]SearchDTO searchDTO)
{
return "search result";
}
以下是调用URL:
虽然已经很晚了,但是可以使用以下方法以名称/值对的形式返回查询参数-
this.Url.Request.GetQueryNameValuePairs()
我有以下网址-
以下是我用WebAPI2编写的方法-
[HttpPost]
public IHttpActionResult SaveDataFromRestToDB(string dataKey) {
var parameters = this.Url.Request.GetQueryNameValuePairs();
//parameters returns KeyValuePair<string, string>[2], containing values passed in Url Query
}
[HttpPost]
公共IHttpActionResult SaveDataFromRestToDB(字符串数据键){
var parameters=this.Url.Request.GetQueryNameValuePairs();
//参数返回KeyValuePair[2],其中包含Url查询中传递的值
}
希望这有帮助 刚刚发现它在另一个问题上得到了含蓄的回答
它指向的解决方案重定向到
或者,简而言之,您可以这样编写您的请求:
在GET请求中通过URI传递字典键/值!!。为什么不为要检索的数据提供某种id,这样就不必在URII中传递如此庞大的数据了?我假设您希望符合GET请求语义。否则,如果考虑到你正在传递相当多的数据,这是一个通用的解决方案,那么你可能需要做一个很好的POST请求。我认为你无法做到这一点。原因是,web api模型默认模型绑定使用名称比较。例如,如果您有一个名为“toyParams[0].Key”的参数(尽管您不能拥有它),它将与查询字符串参数“toyParams[0],Key”的值“someParameter”等进行映射。您可以通过自定义模型绑定来实现这一点。但是,请不要这样做。我将等待答复,以更新我的知识。这涉及到一个帖子请求,数据将作为帖子正文而不是通过url发送。我正在考虑您的搜索参数问题。您必须具有搜索参数,如param1=value1¶m2=value2等,对吗?现在,您可以创建一个类(DTO,数据传输对象),该类包含属性,即param1、param2及其各自的数据类型。它会填满的!您希望将此方法作为答案吗?旧答案,但这不是一个好的解决方案,在您必须传递多个动力学参数的情况下,此解决方案无效。在GET请求的情况下,还有什么其他方法可用?我很想知道“在GET请求的情况下,还有什么其他方法可用?”请解释(我想知道,因为我想学点东西)