Некоторое время назад я создал приложение ASP.NET MVC, и после нескольких циклов обслуживания мне стало интересно, выбрал ли я лучший подход к управлению состоянием. Все работает, но я чувствую, что есть лучший способ.
Сайт основан на поисковой функции, которая имеет довольно много опций. Пользователь начинает использовать сайт, заполнив ряд параметров поиска в форме и нажав кнопку «поиск». Эта кнопка отправляет сообщение в метод поиска, при этом все параметры поиска определяются как параметры методов поиска, например:
public ActionResult Search(string param1, string param2, string param3, int? param3, long? param4)
Теперь на отображаемой странице результатов есть несколько ссылок, ведущих на различные страницы сведений и т. Д. Поскольку мне нужно сохранить состояние поиска на странице сведений, я создаю ссылки ActionLink с большим количеством параметров. над местом, например:
<%=Html.ActionLink("LinkText", "MethodName", new {id="idOfDetailPage", param1=Model.param1, param2=Model.param2, param3=Model.param3, param4=Model.param4}, null)%>
Большинство значений параметров в каждой ссылке не меняются по сравнению с текущим состоянием поиска, но мне нужно передать их, чтобы иметь возможность создавать другие ссылки на странице сведений с текущими параметрами поиска, такими как " назад к результатам поиска "например.
Когда мне нужно добавить параметр поиска из-за запроса новой функции, я обнаруживаю, что модифицирую множество ссылок, а также любые методы Controller, к которым ведут ссылки. Здесь я чувствую, что мне нужен лучший способ.
Я думал об использовании состояния сеанса для хранения параметров поиска, но по какой-то причине подумал, что это не лучшая вещь для использования в ASP MVC, и поэтому мне любопытно, есть ли другой, более чистый способ сделать это.
Примечание: я также попробовал подход, в котором я использую строго типизированный объект в ActionLink, но мне все еще нужно передать параметры этому объекту, чтобы он не стал намного лучше.
Любые идеи приветствуются.