Добавление или замена элемента страницы в строке на C#.


Может ли этот код быть улучшено? Я избегаю использовать querystring коллекция, потому что строка запроса может содержать например: Заказатьпо=Столбец1&Заказатьпо=Столбец2 а это не очень полезно начать с тех, кто включен в файл querystring["Заказпо"]=="Столбец1,Столбец2";

    var query = "";
    if (urlHelper.RequestContext.HttpContext.Request.Url != null)
    {
        query = urlHelper.RequestContext.HttpContext.Request.Url.Query.TrimStart('?');
        if (query.Length > 0)
        {
            var kvp =
                query.Split('&').Select(x => x.Split('='))
                    .Select(x => new { Key = x[0], Value = (x.Length > 0) ? x[1] : ""})
                    .Where(x => x.Key != "page")
                    .ToList();
            kvp.Add(new { Key = "page", Value = number.ToString() });
            query = String.Join("&", kvp.Select(x => x.Key + "=" + x.Value).ToArray());
        }
        else query = String.Format("page={0}", number);
    }


647
1
задан 1 июня 2011 в 03:06 Источник Поделиться
Комментарии
1 ответ

Я думаю, что да, этот код может быть улучшен.

использовать регулярное выражение:

            var newQuery = Regex.Replace(currentQuery, @"(?i)(page=\d*&?)", "").TrimEnd('&');
if (newQuery.Length > 0)
newQuery += string.Format("&Page={0}", currentPageNo);
else
newQuery = string.Format("Page={0}", currentPageNo);

1
ответ дан 17 июня 2011 в 03:06 Источник Поделиться