How to access all querystring parameters as a dictionary

后端 未结 2 704
北恋
北恋 2020-12-08 02:30

I have some dynamic querystring parameters that I would like to interact with as an IDictionary. How do I do this?

I tried

相关标签:
2条回答
  • 2020-12-08 02:52

    You can use the GetQueryNameValuePairs extension method on the HttpRequestMessage to get the parsed query string as a collection of key-value pairs.

    public IHttpActionResult Get()
    {
        var queryString = this.Request.GetQueryNameValuePairs();
    }
    

    And you can create some further extension methods to make it eaiser to work with as described here: WebAPI: Getting Headers, QueryString and Cookie Values

    /// <summary>
    /// Extends the HttpRequestMessage collection
    /// </summary>
    public static class HttpRequestMessageExtensions
    {
        /// <summary>
        /// Returns a dictionary of QueryStrings that's easier to work with 
        /// than GetQueryNameValuePairs KevValuePairs collection.
        /// 
        /// If you need to pull a few single values use GetQueryString instead.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static Dictionary<string, string> GetQueryStrings(
            this HttpRequestMessage request)
        {
             return request.GetQueryNameValuePairs()
                           .ToDictionary(kv => kv.Key, kv=> kv.Value, 
                                StringComparer.OrdinalIgnoreCase);
        }
    }
    
    0 讨论(0)
  • 2020-12-08 03:00

    In addition to what nemesv mentioned, you can also create a custom parameter binding for IDictionary<string,string> similar to the approach I show here:

    How would I create a model binder to bind an int array?

    0 讨论(0)
提交回复
热议问题