ASP.NET MVC Точки расширения генерации URL

Каковы точки расширения генерации URL в ASP.NET MVC?

  1. Маршруты - от этого зависит виртуальный путь
  2. ???

Приложение 1
В частности, мне нужно контролировать не только часть пути URL, но и хост. И я хотел бы встроить логику своего поколения в MVC Framework, чтобы любой вызов стандартным Html.ActionLink метод будет включать мою логику. Это было бы прекрасно. Однако, изучая источники MVC, я отчаянно пытаюсь достичь своей цели простым способом.

3 ответа

Решение

Действительно, невозможно достичь желаемой гибкости, так как Route дает только часть VirtualPath во время генерации URL.

Маршруты там, где они есть. Помните, однако, что вы можете создать подкласс Route и предоставить собственную реализацию, которая не использует шаблоны URI ключ / значение.

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

Маршрутизация точек расширения

  • Маршруты
  • Маршрутные ограничения
  • Маршрутизаторы

В вашем конкретном случае вам придется написать свой собственный маршрут, который будет заполнять дополнительные элементы RouteData, связанные с хостом. Парсинг вашего URL будет полностью на вас.

"{Хост}/{контроллер}/{действие}"

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

редактировать

Я думаю, что эта статья о доменной маршрутизации может быть вам полезна. Смотрится прямо и непринужденно.

Другие вопросы по тегам