ASP.NET MVC Точки расширения генерации URL
Каковы точки расширения генерации URL в ASP.NET MVC?
- Маршруты - от этого зависит виртуальный путь
- ???
Приложение 1
В частности, мне нужно контролировать не только часть пути URL, но и хост. И я хотел бы встроить логику своего поколения в MVC Framework, чтобы любой вызов стандартным Html.ActionLink
метод будет включать мою логику. Это было бы прекрасно. Однако, изучая источники MVC, я отчаянно пытаюсь достичь своей цели простым способом.
3 ответа
Действительно, невозможно достичь желаемой гибкости, так как Route дает только часть VirtualPath во время генерации URL.
Маршруты там, где они есть. Помните, однако, что вы можете создать подкласс Route и предоставить собственную реализацию, которая не использует шаблоны URI ключ / значение.
Ничто не мешает вам написать собственное решение с нуля, но в этом нет особого смысла, поскольку у вас уже есть расширяемая основа для работы с вами.
Маршрутизация точек расширения
- Маршруты
- Маршрутные ограничения
- Маршрутизаторы
В вашем конкретном случае вам придется написать свой собственный маршрут, который будет заполнять дополнительные элементы RouteData, связанные с хостом. Парсинг вашего URL будет полностью на вас.
"{Хост}/{контроллер}/{действие}"
Возможно также создайте свой собственный обработчик маршрута, который сделает обязательным параметр хоста. Но это уже зависит от ваших конкретных потребностей.
редактировать
Я думаю, что эта статья о доменной маршрутизации может быть вам полезна. Смотрится прямо и непринужденно.