Я получаю неправильный 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
to /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-адреса запроса, но есть ли способ заставить его работать, не меняя его на перенаправление?
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
.