gpt4 book ai didi

c# - 从 URI 查询字符串解析字符串总是返回空值

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:54 25 4
gpt4 key购买 nike

我试图从我的 URI 的 querystring 中检索一个 int 值,但我遇到了一些问题。

我有一个请求 URI,如下所示

http://localhost:64813/api/MyController/GetTree?%24filter=parentId%20eq%207

我通过 postman 发送它, Controller 接收它,但我无法访问 parentId 的值。我做错了什么?

到目前为止,这是我在我的 Controller 上尝试过的……这些尝试都没有奏效……

1) 我试图检索一个名为string 的过滤器,但它是null...

    [AllowAnonymous]
[HttpGet("GetTree")]
public IActionResult GetTree(string filter)
{
int q = filter.LastIndexOf(" eq ");
string r = parentId.Substring(q);
int result = Convert.ToInt32(r);

2) 我尝试使用 [FromQuery]filter 访问 parentId,但没有。始终为 null 值。

    [AllowAnonymous]
[HttpGet("GetTree")]
public IActionResult GetTree([FromQuery(Name = "filter")] string parentId)
{
int q = parentId.LastIndexOf(" eq ");
string r = parentId.Substring(q);
int result = Convert.ToInt32(r);

3) 与第二次尝试一样,但我尝试获取整个查询。您可以猜到,stringnull,再次...

    [AllowAnonymous]
[HttpGet("GetTree")]
public IActionResult GetNodi([FromQuery] string filter)
{
int q = filter.LastIndexOf(" eq ");
string r = filter.Substring(q);
int result = Convert.ToInt32(r);

其他值得注意的尝试:

4) 按照尝试 #2 进行,但我尝试将 parentId 解析为 int 而不是 string。没什么,即使我更改了请求值,它的默认值始终为零。

5) 通过将 filter 解析为对象(见下文)进行尝试,尝试 #1、尝试 #2 和 #3。该字符串始终为 null

public class NodeReq
{
public string ParentId { get; set; }
}

我做错了什么?如何访问此查询字符串 parentId 值?

最佳答案

你的网址有误,应该是:

http://localhost:64813/api/MyController/GetTree?filter=parentId%20eq%207

除非您使用 OData ,但似乎并非如此。

如果您使用的是 OData,则无需转义字符,它应该适用于此 URL:

http://localhost:64813/api/MyController/GetTree?$filter=parentId eq 7

如果您需要在您的 .net 核心项目中设置 OData,我建议您遵循这个包:

更新


由于您的角度设置需要像 url 模式这样的 OData,而且 我无法控制它如何构建请求查询;您的 Controller 需要与协议(protocol)兼容。可以在此处找到有关此主题的更多信息:

https://www.nuget.org/packages/Microsoft.OData.Core/

https://github.com/OData/odata.net

OData Support in ASP.net core

更新:


应该是这个包:

https://www.nuget.org/packages/Microsoft.AspNetCore.OData/7.0.0

关于c# - 从 URI 查询字符串解析字符串总是返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51514553/

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