gpt4 book ai didi

asp.net-core-webapi - 为什么 FromQuery 在我的 ASP.Net Core 1.1 Controller 操作中不起作用

转载 作者:行者123 更新时间:2023-12-02 03:15:29 27 4
gpt4 key购买 nike

我正在开发 ASP.Net Core 1.1 Web API。我有一个 ServiceTypeCode Controller ,如下所示;

[Produces("application/json")]
[Route("api/[controller]")]
public class ServiceTypeCodeController : Controller
{
...
...
...


[HttpGet]
public IActionResult Get([FromQuery] string a_query)
{
try
{
if (string.IsNullOrEmpty(a_query))
{
OperationResult<List<ServiceTypeCode>, string> result = m_bl.GetAllServiceTypeCodes();
if (result.Success && result.Result.Count > 0)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
} else
{
// Deserialize query into dictionary of strings and StringValues
var query = QueryHelpers.ParseQuery(a_query.ToLower());

if (query.TryGetValue("mailclasscode", out var mailClassCode))
{
if (!string.IsNullOrEmpty(mailClassCode))
{
OperationResult<List<ServiceTypeCode>, string> result = m_bl.GetAllServiceTypeCodes(mailClassCode);
if (result.Success && result.Result.Count > 0)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
}
}
if (query.TryGetValue("stc", out var stc))
{
if (!string.IsNullOrEmpty(stc))
{
OperationResult<ServiceTypeCode, string> result = m_bl.GetServiceTypeCode(stc);
if (result.Success)
{
return Ok(JsonConvert.SerializeObject(result.Result));
}
}
}
}
return NotFound();
}
catch (Exception ex)
{
string msg = "An exception occurred while trying to get a list of ServiceTypeCodes from the database.";
m_logger.LogError(1, ex, msg);
ApiError error = BuildError("Server Error - Exception", "500", "Get", ex, msg);
return Ok(JsonConvert.SerializeObject(error));
}

}

如果我使用网址...

http://localhost:5000/api/servicetypecodes

在 PostMan 中使用 GET 动词,我如预期获得了服务类型代码列表。但是,如果我尝试添加任何内容作为查询字符串,例如...

http://localhost:5000/api/servicetypecodes?mailclasscode=fc

并在我的代码中设置一个断点

if (string.IsNullOrEmpty(a_query))

位置,a_query 的值为 null,而不是预期的“mailclasscode=fc”

我在这里缺少什么?

预先感谢您的帮助。

最佳答案

.Net Core Controller 方法的变量名称必须与您发送的变量名称相同。

http://localhost:5000/api/servicetypecodes?mailclasscode=fc

如果使用该 url 传递数据, Controller 方法必须如下所示:

[HttpGet]
public IActionResult Get([FromQuery] string mailclasscode)
{...}

反之亦然。

祝你好运 - 编码愉快。

关于asp.net-core-webapi - 为什么 FromQuery 在我的 ASP.Net Core 1.1 Controller 操作中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44976058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com