String URL to RouteValueDictionary

前端 未结 4 714
盖世英雄少女心
盖世英雄少女心 2020-11-27 18:02

Is there as easy way to convert string URL to RouteValueDictionary collection? Some method like UrlToRouteValueDictionary(string url).

I need such metho

4条回答
  •  情歌与酒
    2020-11-27 18:43

    I wouldn't rely on RouteTable.Routes.GetRouteData from previous examples because in that case you risk missing some values (for example if your query string parameters don't fully fit any of registered mapping routes). Also, my version doesn't require mocking a bunch of request/response/context objects.

    public static RouteValueDictionary UrlToRouteValueDictionary(string url)
    {
        int queryPos = url.IndexOf('?');
    
        if (queryPos != -1)
        {
            string queryString = url.Substring(queryPos + 1);
            var valuesCollection = HttpUtility.ParseQueryString(queryString);
            return new RouteValueDictionary(valuesCollection.AllKeys.ToDictionary(k => k, k => (object)valuesCollection[k]));
        }
    
        return new RouteValueDictionary();
    }
    

提交回复
热议问题