Должен ли я по-прежнему использовать строки запросов для номера страницы и т. Д. При использовании маршрутизации URL-адресов ASP.NET 4? - PullRequest
1 голос
/ 20 апреля 2010

Я перешел с UrlRewriter от Intelligencia на новую маршрутизацию веб-форм в ASP.NET 4.0. У меня он отлично работает для базовых страниц, однако на моем сайте электронной коммерции при просмотре страниц категорий я ранее использовал строки запросов, которые были встроены в мой элемент управления пейджером, для управления подкачкой страниц, и теперь я не уверен, как это сделать с помощью маршрутизации. 1001 *

Я определил MapPageRoute как:

routes.MapPageRoute("cat-browse", "Category/{name}_{id}", ~/CategoryPage.aspx");

Это прекрасно работает. Теперь, кто-то нажимает, чтобы перейти на страницу 2. Раньше я бы просто привязал? Page = 2 к URL. Как мне справиться с этим с помощью маршрутизации веб-форм? Я знаю, что могу сделать что-то вроде:

http://www.mysite.com/Category/Arts-and-Crafts_17/page/2

Но кроме страницы у меня могут быть фильтры, возрастные диапазоны, пол и т. Д.

  1. Должен ли я просто продолжать определять маршруты которые обрабатывают эти переменные как выше
  2. Должен ли я продолжать использовать строки запросов и если да, как вы определяете маршрут справиться с этим?

Ответы [ 2 ]

4 голосов
/ 28 апреля 2010

Основной причиной использования URL-маршрутизации является предоставление чистых, удобных для пользователя и SEO-адресов. Если это ваша цель, то старайтесь придерживаться ее и не используйте параметры строки запроса. Примечание: я не думаю, что нам нужно полностью запретить использование строк запросов, и, в зависимости от вашей ситуации, вы можете решить, что лучше всего использовать параметры строки запросов для параметров, которые используются не часто, или если реальное значение не добавляется путем создания информация более семантически значимая.

Итак, вот что я бы сделал:

Определите все остальные параметры:

routes.MapPageRoute("cat-browse", "Category/{name}_{id}/{*queryvalues}", "~/CategoryPage.aspx"); 

В /CategoryPage.aspx перейдите к параметру маршрутизатора и затем выполните соответствующий анализ:

Page.RouteData.Values["queryvalues"]

Вместо использования синтаксиса Arts-and-Crafts_17/**page/2/age/34** для этих параметров я предпочитаю использовать следующий синтаксис: Arts-and-Crafts_17/pg-2/age-34/

Если вы сделаете это, параметр catch-all 'querystring' будет равен pg-2 / age-34. Теперь вы можете легко проанализировать эти данные и добавить каждое имя / значение в контекст страницы. Обратите внимание, что вам нужно будет что-то сделать в этом направлении, поскольку каждый из этих параметров является необязательным на вашем сайте.

0 голосов
/ 27 апреля 2010

Вы можете воспользоваться именованными и необязательными параметрами C # 4.0. Пожалуйста, посмотрите на этот пример от взломанного

Если вы используете более низкую версию платформы, вы также можете использовать код по ссылке выше. Но вместо того, чтобы объявить метод как

public ActionResult Search(int? page=0)
{}

Вы можете объявить его как

public ActionResult Search(int? page)
{
   if(page == null)
   {
     page=0;
   }
}

НТН

...