Перемещение со страницы A на страницу B в Asp.Net. Каков «Лучший» способ? - PullRequest
0 голосов
/ 13 мая 2009

У меня есть пользователь на том, что мы будем называть PageA.aspx. Этот пользователь должен получить доступ к PageB.aspx. Очевидным способом является наличие гиперссылки, которая просто отправляет их в PageB.aspx. Это заставило меня задуматься о других способах перехода между страницами. Можно использовать javascript для перехода на клиентскую сторону. Существует также, по-видимому, громоздкое перенаправление на стороне сервера.

Что я хотел бы знать, так это то, что, если таковые имеются, потери производительности между этими различными методами. Я собираюсь предположить, что серверная часть немного тяжелее, но на сколько? Эти методы масштабируются по-разному? Есть ли какие-то скрытые проблемы с тем, чтобы сделать это так или иначе?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 13 мая 2009

Реальная ссылка лучше всего подходит для большинства обстоятельств. Все пользовательские агенты знают, что такое ссылка и что она представляет. Лучше всего для SEO, доступности и юзабилити.

Перенаправление на стороне сервера (с помощью обратной передачи) хорошо, если вам нужно, скажем, отслеживать особенности, по какой ссылке щелкали ... Но это дополнительный запрос к серверу (и время для пользователя). Кроме того, он запускает SEO (и др.), Так что это только жизнеспособный вариант в надлежащем «веб-приложении», где спайдринг или доступность контролируются или игнорируются.

JS может дать вам возможность отслеживать, но он бесполезен (сам по себе) в средах, где JS отключен. Отправка активности обратно на сервер увеличивает нагрузку, поэтому нужно учесть.

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

Короче говоря: если у вас нет веских причин не придерживаться стандартов.

1 голос
/ 13 мая 2009

Мне кажется, важный вопрос: ПОЧЕМУ пользователь перешел с PageA на PageB? Что они делают, чтобы это произошло?

Было ли это потому, что они запросили какой-то другой ресурс («получить»), передали ли они данные на ваш сервер (т.е. были ли они частью «сообщения»), знает ли пользователь, что PageA отличается от PageB (являются ли они концептуально один и тот же ресурс, но разные взгляды на него) или что-то еще?

Другие рекомендации, такие как доступность PageB без PageA (можно ли добавить ее в закладки, есть ли у нее собственный URL, должен ли он отображаться в браузере как другой URL?)

Трудно дать вам «лучшее» решение, не разбираясь в этом.

Что касается использования Server.Transfer или Response.Redirect, различие этих двух подходов было рассмотрено здесь:

Server.Transfer Vs. Response.Redirect Response.Redirect и Server.Transfer Когда я буду использовать Server.Transfer через PostBackURL?

О, и ни один из них не подходит для приложения ASP.NET MVC, где вместо этого вам следует вместо этого направлять действие на контроллер.

http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another-action-and-passing-information-to-it.aspx Перенаправление на действие в другом контроллере

0 голосов
/ 13 мая 2009

Мой общий подход заключается в том, что любая страница, отображающая данные, должна быть полезной. Сообщения должны принимать данные, но не возвращать их, ИМХО.

Поэтому я (почти) всегда делаю редирект после поста. Это небольшая цена, которая предотвращает ошибку пользователя.

С одной стороны, это предотвращает множественные публикации с одними и теми же данными - если пользователь по какой-либо причине перезагружается (или нажимает кнопку «Назад»), я не хочу, чтобы данные повторно отправлялись.

Проблема поисковой системы также важна. Если PageB - это страница, которую вы хотите проиндексировать, она не будет найдена с помощью javascript или поста.

...