Маршрутизация .NET соответствует всему шаблону (подстановочный знак) с исключениями - PullRequest
0 голосов
/ 13 октября 2009

Если, скажем, у меня есть маршрут, который определен так: "{books}/{*all}", то любой URL, для которого определена корневая папка, будет ему соответствовать (т.е. http://mysite.com/greekbooks/somethingirrelavant.htm).

Но что, если бы я хотел пойти дальше и хотел бы представить пользовательский обработчик для греческих книг, опубликованных в 1982 году (т. Е. URL http://mysite.com/greekbooks/1982/anythinghere). Я бы действительно не хотел бы , чтобы выразить эту логику в мой первый обработчик маршрута, но чтобы представить второй для работы со страницами обслуживания, когда этот URL совпадает.

Проблема в том, что "{books}/{*all}" также будет есть "{books}/1982/{*all}".

В основном, как вы определяете более одного обработчика маршрута при работе с '*' ( all ) match? Возможно ли это вообще?

Ответы [ 2 ]

0 голосов
/ 13 октября 2009

Это можно сделать, управляя порядком определения маршрутов, поскольку URL-адрес сравнивается с маршрутами в порядке их добавления в коллекцию маршрутов.

Вот правила обработки маршрутов ...

  1. Шаблоны маршрутов, которые вы определили, или маршрут по умолчанию шаблоны, если таковые имеются, которые включены в вашем типе проекта.
  2. Порядок, в котором вы добавили их в коллекцию Routes.
  3. Любые значения по умолчанию, которые вы указали для маршрута.
  4. Любые ограничения, которые вы указали для маршрута.
  5. Определена ли у вас маршрутизация для обработки запросов, соответствующих физический файл.

ASP.NET Routing

0 голосов
/ 13 октября 2009

Да, это возможно. Вы бы положили свой дополнительный

{book}/{year}/{*all} 

поймай первым. Я бы пошел еще дальше и предложил бы добавить ограничение к маршруту {book} / {year} / {* all}, чтобы оно было только числовым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...