Я получаю неверный URL из метода Action
, когда использую перезапись URL.
У меня есть это правило перезаписи в web.config:
<rule name="Old Objects 2" stopProcessing="true">
<match url="^transportbilar/(nya|begagnade|miljobilar)/(.*)$" ignoreCase="true"/>
<action type="Rewrite" url="/transportbilar/{R:2}"/>
</rule>
Это перезапишет URL, например, /transportbilar/nya/fiat/7s76s8dg
на /transportbilar/fiat/7s76s8dg
, который работает нормально, но Url.Action
запутывается из-за этого.
Я использую подобное выражение для создания URL-адреса на странице:
url.Action("Slideshow", "Object", new { id = objectId });
Если перезапись URL-адреса не используется (переход непосредственно к странице), это приводит к правильному URL-адресу /Object/Slideshow/7s76s8dg
, но при использовании перезаписи URL-адреса метод Action
добавляет первую часть URL-адреса страницы к сгенерированный URL-адрес и создает неправильный URL-адрес /transportbilar/Object/Slideshow/7s76s8dg
.
Я думаю, что вместо этого я могу сделать Redirect в правиле перезаписи, что обойдёт проблему, так как изменился запрашивающий URL, но есть ли способ заставить его работать, не меняя его на Redirect?
Edit:
Маршруты, которые, я думаю, могли бы иметь отношение, следующие (добавлены в следующем порядке):
transportbilar/handlare/{id}/{criteria}
transportbilar/handlare
transportbilar
transportbilar/sokresultat/{criteria}
transportbilar/{brand}/{id}/{criteria}
{controller}/{action}/{id}
Последний маршрут перехватит URL /Object/Slideshow/7s76s8dg
, а второй из последних перехватит /transportbilar/fiat/7s76s8dg
.