Как Вы сохраняете значения querystring в asp.net mvc?

Если бы мне пришлось угадывать, я бы сказал, по причинам исторической / обратной совместимости.
Oracle впервые появился в 1977 году, и, вероятно, с технологией того времени вычислительно дорого было делать дополнительную работу для поиска без учета регистра, поэтому они просто выбрали точное совпадение.

12
задан dtc 20 May 2009 в 19:19
поделиться

3 ответа

Я бы обработал QueryString в представлении (ваш вариант №1) вместо того, чтобы передавать его из контроллера. Такой подход делает представление более самодостаточным, позволяя преобразовать его в элемент управления представлением и повторно использовать его в разных представлениях.

Примечание. Доступ к QueryString непосредственно в представлении может показаться нарушением принципа проектирования разделение модели и представления, но на самом деле эти данные представляют собой проблему навигации, которая связана с представлением, а не на самом деле частью модели.

6
ответ дан 2 December 2019 в 20:19
поделиться

Я использую для этого метод расширения:

public static string RouteLinkWithExtraValues(
        this HtmlHelper htmlHelper,
        string name,
        object values)
    {
        var routeValues = new RouteValueDictionary(htmlHelper.ViewContext.RouteData.Values);

        var extraValues = new RouteValueDictionary(values);
        foreach (var val in extraValues)
        {
            if (!routeValues.ContainsKey(val.Key))
                routeValues.Add(val.Key, val.Value);
            else
                routeValues[val.Key] = val.Value;
        }

        foreach (string key in htmlHelper.ViewContext.HttpContext.Request.Form)
        {
            routeValues[key] = htmlHelper.ViewContext.HttpContext.Request.Form[key];
        }

        foreach (string key in htmlHelper.ViewContext.HttpContext.Request.QueryString)
        {
            if (!routeValues.ContainsKey(key) && htmlHelper.ViewContext.HttpContext.Request.QueryString[key] != "")
                routeValues[key] = htmlHelper.ViewContext.HttpContext.Request.QueryString[key];
        }

        var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);

        return string.Format("<a href=\"{0}\">{1}</a>", urlHelper.RouteUrl(routeValues), name);
    }
8
ответ дан 2 December 2019 в 20:19
поделиться

Я бы просто сохранил значения в сеансе таким образом, чтобы ссылки для пейджинга были только необходимы;

/ questions? Page = 2

/ questions? Page = 3

Единственная причина, по которой я не хочу использовать QueryString, заключается в том, что я не хочу, чтобы пользователь видел значения, которые я передаю программе. Это позволяет им легко зайти в адресную строку и начать изменять значения, чтобы «посмотреть, что происходит». С помощью этого кода все, что они могли сделать, это изменить номер страницы.

1
ответ дан 2 December 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: