Основной причиной использования 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. Теперь вы можете легко проанализировать эти данные и добавить каждое имя / значение в контекст страницы. Обратите внимание, что вам нужно будет что-то сделать в этом направлении, поскольку каждый из этих параметров является необязательным на вашем сайте.