#c# #asp.net #wcf #navigation
#c# #asp.net #wcf #навигация
Вопрос:
У меня есть веб-сайт на c # / asp.net 4.0 (не MVC), где пользователь может искать различные элементы. Функциональность поиска / результатов работает примерно так:
На странице поиска пользователь заполняет критерии поиска (текстовые поля, выпадающие списки и т.д.) И нажимает кнопку отправки. Обработчик события on_click выполняет некоторую проверку и / или ошибок. Если все проверяется, я создаю объект для хранения всех значений и помещаю объект в сеанс. Затем я делаю ответ.перенаправление на страницу результатов. На странице результатов я считываю объект из сеанса и связываюсь со службой wcf и передаю объект ей. Wcf выполняет поиск и возвращает результаты (если таковые имеются), и я показываю результаты.
Мне было любопытно, есть ли лучший способ сделать это. Это работает нормально, но что-то в этом не так. Я не в восторге от загрузки объекта в сеанс.
Я бы предпочел отправить объект (с критериями поиска) в wcf, затем выполнить перенаправление, чтобы страница результатов задерживала загрузку, пока я не получу ответ от службы wcf. Как только я получу результаты, возвращаюсь и загружаю страницу с результатами.
Возможно ли это? Любые отзывы / ссылки были бы оценены.
Также не будет никаких третьих сторон, использующих наш сервис wcf, это все внутреннее.
Комментарии:
1. не могли бы вы просто создать стандартную форму post на странице результатов и создать там свои объекты поиска? Если вам нужно запоминать поисковые запросы, то, вероятно, лучше придерживаться сеанса.
Ответ №1:
Есть три способа, как это сделать
- Вместо передачи данных в виде post используйте простой переход на страницу поиска. Критерии поиска будут переданы в URL, как это сделано, например, Google.
- Обратная публикация на разных страницах — функция, доступная с .NET 2.0. Это удалит сеанс и перенаправит. Вы также можете использовать
Server.Transfer
/Server.Execute
. - Обратный вызов AJAX. Ваш поиск не будет публиковать форму, а вызовет службу напрямую, чтобы получить результат. Вы можете либо использовать ASP.NET менеджер сценариев и прочее, связанное с этим, или используйте какой-нибудь облегченный фреймворк javascript, такой как jQuery. Ваша служба WCF должна предоставлять webHttpEndpoint в кодировке JSON.