Закончено дублирование маршрутов из основного веб-сайта, которые мне нужны в виджете.
Пример маршрута на основном сайте:
context.MapRoute(
"Q&A - Individual Q",
"{locationUniqueUri}/questions/{questionUniqueUri}",
new { controller = "Questions", action = "Detail" },
);
Дублированный маршрут в виджете:
RouteTable.Routes.MapRoute(
"Outbound - Q&A - Individual Q",
"{locationUniqueUri}/questions/{questionUniqueUri}"
);
Обратите внимание, что по умолчанию нет маршрутов - это потому, что мне все равно, поскольку это касается сопоставления маршрута с контроллером / действием. Но это происходит на сайте, а не в виджете. Все, что меня беспокоит, это генерация URL.
Затем я создал простую оболочку для RouteLink
с именем OutboundRouteLink
, которая указывает имя хоста (для основного веб-сайта) и создает ссылку.
Не думаю, что это слишком плохое решение. Очевидно, это жестко запрограммировано - если маршруты меняются на главном веб-сайте, то мне придется изменить маршруты виджетов. Но это хорошо, потому что, если один из моих URL-адресов изменился, мне все равно пришлось бы делать 301, поэтому старые URL-адреса все равно будут работать для виджета (они получат 301-й).
Кроме того, я мог бы пойти еще дальше и сохранить URL-адрес маршрута в файле конфигурации и поделиться им между проектами, что обеспечило бы мне большую безопасность. Но есть только около 3 исходящих URL-адресов, так что все должно быть в порядке.
Не говорю, что это лучший способ справиться с этим, но я доволен этим.