C# 如何使用字典参数为GET请求创建正确的帮助页?

C# 如何使用字典参数为GET请求创建正确的帮助页?,c#,asp.net-mvc,get,asp.net-web-api2,C#,Asp.net Mvc,Get,Asp.net Web Api2,我的API控制器中有一个搜索方法。它是一个GET请求,输入参数为Dictionary keyValuePairs 代码是这样的 [Route("Search")] [HttpGet] public IHttpActionResult Search( Dictionary<string, string> keyValuePairs) { IDictionary<string, object> resultDict = new Dictionary<strin

我的API控制器中有一个搜索方法。它是一个GET请求,输入参数为Dictionary keyValuePairs

代码是这样的

[Route("Search")] 
[HttpGet]
public IHttpActionResult Search( Dictionary<string, string> keyValuePairs)
 {

  IDictionary<string, object> resultDict = new Dictionary<string, object>();  
  var keyValueParameters = this.Url.Request.GetQueryNameValuePairs();           

//Do bunch of things with keyValueParameters and fill up resultDict 

   return Ok(resultDict);

  }
[路由(“搜索”)]
[HttpGet]
公共IHttpActionResult搜索(字典键值对)
{
IDictionary resultDict=新字典();
var keyValueParameters=this.Url.Request.GetQueryNameValuePairs();
//用keyValueParameters做很多事情,然后填充ResultDisct
返回Ok(结果提示);
}
帮助页面如下。

您可以在请求信息中看到正文参数,但不能在响应信息中看到正文参数。对于GET来说不应该是另一种方式吗。
我确信我需要以不同的方式处理这个问题,因为涉及到一些词典,但无法解决它。

助手页面似乎使用了非常常见的ApiExplorer包。我自己没有尝试过,但您可以在代码中添加类似的内容,使其了解正确的响应:

[ProducesResponseType(type: typeof(IDictionary<string, object>), statusCode: StatusCodes.Status200OK)]
public IHttpActionResult Search( Dictionary<string, string> keyValuePairs)
[产品响应类型(类型:typeof(IDictionary),状态代码:StatusCodes.Status200OK)]
公共IHttpActionResult搜索(字典键值对)

你能解释一下你用什么来生成网页用户界面吗?谢谢你的回复。ResponseType属性解决了响应信息的问题,但请求仍然相同。应该有类似的东西告诉帮助生成器请求参数中有一个字典类型。@user2918107我不确定你的意思,基本上,它已经在那里了-你有字典作为参数类型,它出现在帮助器页面上。你的意思是说有几个媒体类型格式化程序,而你只需要一个?然后尝试使用
[Consumes(“application/json”)]
属性来实现一个媒体类型格式化程序。我的搜索是GET请求。我认为它不应该在body参数中显示Dictionary。它应该在URI参数中。当前,帮助程序页面显示URI参数None和Dictionary in Body参数。@user2918107您可以尝试添加以下内容:
public IHttpActionResult Search([FromRoute]Dictionary keyValuePairs)
非常感谢。现在一切都对了。有没有办法只显示“搜索”而不显示整个搜索?keyValuePairs[0]。key={keyValuePairs[0]。key}&keyValuePairs[0]。value={keyValuePairs[0]。value}&keyValuePairs[1]。key={keyValuePairs[1]。key}&keyValuePairs[1]。value={keyValuePairs[1]。value}