【问题标题】:Dynamically retrieve attribute-value pairs of Request.RequestUri.Query?动态检索 Request.RequestUri.Query 的属性值对?
【发布时间】:2021-01-14 20:43:53
【问题描述】:

我有一种感觉,我正在重写一些必须存在的东西。有没有更好的方法来获取和拆分 http 查询的所有参数。

我有这个问题

http://localhost:59289/api/Company/Example/Sequence/01234567890128/NextRange?Quantity=5000&Order=O1234

为了简单起见,假设我想将这两个参数保存为 JSON 字符串中的元数据。参数可以是其他参数。参数列表是动态的。我可以让用户选择他想要传递的参数,系统会将它们作为元数据以 JSON 格式保存在我的数据库中。

在 Visual Studio 的即时窗口中,我可以对此进行测试:

Request.RequestUri.Query
"?Quantity=5000&Order=O1234"

Request.RequestUri.Query 是一个字符串。然后我可以用“&”拆分它并创建一个字符串字典,然后将其序列化为 JSON。但我很惊讶我必须自己分开这个。有没有更好的方法来查询它们请求所有值的所有参数键?

我检查了这个https://en.wikipedia.org/wiki/URL

解决方案 1 ----------

我已经试过了

var query = @"?Quantity=5000&Order=O1234";
var p = query
    .TrimStart('?')
    .Split('&')
    .Select(y => y.Split('='))
    .SelectMany(y => new Dictionary<string, string>()
    {
        { y[0], y[1] }
    });

这是我的手动解决方案。如果我的字符串为空,我会得到一个异常。

【问题讨论】:

    标签: c# http url asp.net-web-api


    【解决方案1】:

    找到:

    HttpUtility.ParseQueryString(query);
    

    【讨论】:

      【解决方案2】:

      Request.GetQueryNameValuePairs();

      【讨论】:

        猜你喜欢
        • 2020-05-14
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多