gpt4 book ai didi

c# - 如何在 .net core 中读取无键查询字符串

转载 作者:行者123 更新时间:2023-11-30 16:40:29 24 4
gpt4 key购买 nike

.NET Core 中无键查询字符串参数的替换是什么?

在 asp.net 中,语法是 Request.QueryString[ null ],但是 .NET Core 会为此抛出 null 异常,不允许您传入 null键名。

例如,我需要支持这种格式的url:

http://localhost:54301/RBLeCORS.ashx?{Command:CalcEngineStatus}

但是,除此之外,我还需要能够处理通过 $.ajax() 调用从 javascript 发布的命令,其中数据是发布的,而不是放在查询字符串上。

无键的地方(我看到评论想称它为无值,我猜这适用于 .NET Core,但我看到它们被称为 keyless for asp.net b/c 你可以使用 null key) value 是一个 json 对象,它可以包含的不仅仅是我给出的这个简单示例。

更新:这是我作为解决方法所做的当前代码。

        string queryData = null;
if (context.Request.Query.Count == 1 )
{
var firstKey = context.Request.Query.Keys.ElementAt(0);
var firstValue = context.Request.Query[firstKey];

if ( string.IsNullOrEmpty( firstValue ) )
{
queryData = firstKey;
}
}

最佳答案

来自 here我注意到了这一点:

You can use null as the key for the NameValueCollection and it will give you a comma-delimited list of parameter names that don't have values.

For http://example.com?bar=3&foo you would use Request.QueryString[null] and it would retrieve foo.

所以,在 dotnet core 中,这是行不通的。

Request 包含一个名为 Query 的属性,其类型为 IQueryCollection
https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.iquerycollection?view=aspnetcore-2.1

有了这个,您可以使用 Item[String] 通过已知键获取项目,如您所知。

Keys 包含查询集合中存在的所有键的列表。

我想你想要的是获取所有值,而不考虑它们的键值?

你可以使用:

var values = Request.Query.ToList ()
.SelectMany (x => x.Value);

values 将是传递给查询字符串的值列表:

?key1=val1&key2=val2

会回来

  • val1
  • val2

关于c# - 如何在 .net core 中读取无键查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51288760/

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