Лучший подход для передачи 25 полей поиска на страницу aspx - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть экран поиска с 25 полями. Когда пользователь нажимает кнопку поиска, эта информация должна быть передана на сервер, и пользователь должен быть перенаправлен на страницу SearchResultList. Каков наилучший способ вывести выбранные пользователем значения (с экрана поиска) на экран SearchResultList?

Я могу придумать два пути:

  1. Добавить поля в сессию
  2. Передать выбранные значения в виде строки запроса

Есть ли другой лучший подход?

Примечание. В будущем экран поиска может быть преобразован во всплывающий элемент div; тем не менее он будет перенаправлять на другую страницу для результата.

Окружающая среда ::

Visual Studio 2010

ASP.Net Web Forms

C #

Ответы [ 5 ]

3 голосов
/ 02 апреля 2012

Не могли бы вы опубликовать форму на следующей странице, а затем просто получить значения через Request.Form [""] на странице поиска?

1 голос
/ 02 апреля 2012

Для поиска я обычно предпочитаю использовать GET со строками запроса.Очень просто и прозрачно для пользователя.Единственное предостережение - в вашем случае 25 полей, вы можете столкнуться с лимитом Url .

Посмотрите, как Stackoverflow или Google выполняет поиск.Показывать параметры в строке запроса только для значений не по умолчанию.Например, если пользователь просто вводит 1 из 25 значений, вам следует просто передать этот один параметр.Например: / search? Q = term

Используйте POST для методов на основе транзакций, которые обновляют / сохраняют данные.(Или если ваш URL-адрес будет слишком длинным со строками запроса.)

Избегайте использования сеанса, так как он имеет граничные условия, которые допускают появление ошибок. Вам нужно беспокоиться о тайм-аутах сеанса, кэшировании CDN, переключении пользователеймежду серверами и т. д. Зачем усложнять вашу жизнь, когда вам это не нужно.

1 голос
/ 02 апреля 2012

Существует 3-й, и лучше, вариант, который заключается в использовании POST, а не GET (что вы сделали бы, когда вы помещаете свои параметры в строку запроса).

ASPX использует POST автоматически, если вы используете такую ​​форму:

<form id="form1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    ...
</form>

Это лучше, потому что данные передаются на страницу при обратной передаче, используя метод HTTP POST, который не показывает параметры в строке запроса.

Если, однако, вы хотите, чтобы пользователь мог добавлять в закладки / добавить в избранное поиск без программирования, тогда лучше всего использовать подход GET (querystring).

Использование состояния сеанса для хранения параметров поиска сложно проверить, отладить и, как правило, является плохой практикой.

1 голос
/ 02 апреля 2012

Я бы порекомендовал использовать сеанс и один объект сеанса при этом. Примерно так:

// When retrieving an object from session state, cast it to 
// the appropriate type.
ArrayList filterOptions = (ArrayList)Session["FilterOptions"];

// Write the modified list back to session state.
Session["FilterOptions"] = filterOptions ;
1 голос
/ 02 апреля 2012

Вы пробовали сериализовать форму с помощью jQuery?

На SO также есть Bunch других сообщений об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...