Вернитесь на страницу поиска без потери критериев поиска

#asp.net #asp.net-mvc-3

#asp.net #asp.net-mvc-3

Вопрос:

Мне нужна помощь в решении этой проблемы. Речь идет о ASP.NET MVC3. У меня есть страница с некоторыми критериями поиска вверху, а внизу — результирующие данные. Пользователь может ввести некоторые критерии и использовать кнопку отправки для повторного получения данных. В моем контроллере у меня есть функция ActionResult для управления этими критериями и возврата на ту же страницу с заполненным классом ViewModel.

Проблема: пользователь может щелкнуть по строке в результирующей таблице для просмотра страницы сведений. На странице сведений он может перейти на страницу редактирования для редактирования данных. На этой странице (редактировать данные) Я хотел бы, чтобы пользователь мог вернуться на страницу результатов поиска (фактически: вернуться назад два раза). Каков наилучший способ продолжить? Если я «просто» использую ActionLink (без публикации данных) на своей странице результатов поиска, она просто отобразит пустую страницу результатов с пустыми критериями поиска. Может быть, мне нужно сохранить мои критерии поиска в переменной сеанса? Мне не нравятся подобные вещи…

Любая помощь будет высоко оценена.

Ответ №1:

Почему бы не поместить данные в Session , как вы говорите?

 public ActionResult Search(string searchCriteria)
{
    Session["searchCriteria"] = searchCriteria;
    // do more stuff     
}
  

Таким образом, вам будут доступны критерии поиска независимо от того, сколько «обратных кликов» сделал пользователь.

Вы могли бы сделать это намного сложнее, но я не думаю, что в данном случае это необходимо. Если вы хотите передать это как данные маршрута в ссылке на действие, вам придется для защиты добавлять searchCriteria параметр к каждой ссылке на действие на страницах, на которые пользователь может перейти со страницы поиска. На мой взгляд, это делает его намного более громоздким.

Иногда достаточно хорошего бывает достаточно. При необходимости выполните рефакторинг позже. 🙂

Комментарии:

1. Привет, Серджи, и спасибо тебе за твое время. Я использовал переменную сеанса. Это работает. На моей странице сведений я использовал ссылку действия, чтобы вернуться к результатам поиска. Я задаю вопрос, потому что я новичок в ASP.NET Мы с MVC иногда боимся делать ошибки. В любом случае спасибо вам и хорошего дня.

2. @Bronzato — Всегда пожалуйста. И добро пожаловать в StackOverflow. Не забудьте отметить этот ответ как правильный, если он помог вам в этом. Вы можете сделать это, нажав на белую галочку слева от ответа.

3. Использование сеанса не будет работать чисто, если пользователи хотят иметь возможность открывать два разных результата поиска на разных вкладках.