c# - 从 URI 查询字符串解析字符串总是返回空值
问题描述
我正在尝试int
从我的 URI 中检索一个值,querystring
但遇到了一些问题。
我有一个如下的请求 URI
http://localhost:64813/api/MyController/GetTree?%24filter=parentId%20eq%207
我通过邮递员发送它,控制器接收它,但我无法访问parentId
' 值。我究竟做错了什么?
这是我迄今为止在我的控制器上尝试过的……但是这些尝试都没有奏效……</p>
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]
to 访问parentId
from filter
,但没有。永远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)像第二次尝试,但我试图获取整个查询。正如你可以猜到的那样string
,null
再次...
[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) 尝试使用 try #1、try #2 和 #3 解析filter
为对象(见下文)。字符串总是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,我无法控制它如何构造请求查询;您的控制器需要与协议兼容。可以在此处找到有关此主题的更多信息:
https://www.nuget.org/packages/Microsoft.OData.Core/
https://github.com/OData/odata.net
更新:
应该是这个包:
https://www.nuget.org/packages/Microsoft.AspNetCore.OData/7.0.0
推荐阅读
- r - CSV 中的单元格(错误地)被读取为 R 中长度为 2 的字符向量
- c# - 当“ASPNETCORE_ENVIRONMENT”:“开发”时,无法从根提供商解析范围服务
- reactjs - ./src/index.js 中的错误模块未找到:../src @ ./src/index.js 中的“shaka-player-react” 17:24-53
- c++ - 如何解决此错误“呼叫没有匹配功能”?
- r - 创建事件开始变量
- css - 如何从网站中隐藏一段常见的文本
- python - Python中的利息计算器。查找总金额和每年支付的金额
- bash - 未执行简单的 .sh 命令
- reactjs - 有没有办法限制 React Native 的 TextInput 中的总行数或换行符?
- java - 来自自定义对象的 JAVA 接口继承