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