В настоящее время я немного знаком с Microsoft MVC4, и я не совсем понимаю маршрутизацию, а также хотел бы.MVC4 URL-адрес переписывания псевдонимов для «более красивых URL-адресов»
То, что я пытаюсь сделать, - сделать мои URL-адреса более удобными для чтения. В настоящее время у меня есть URL-адреса, которые выглядят следующим образом:
- foo.com/UserProfile/Details/6
- foo.com/UserExperience/Details/
- foo.com/UserSpecificController/Edit/8
Все контроллеров пользователя начинается с «пользователем» Мне было интересно, если это было возможно, чтобы изменить эти URL-адрес, так как они выглядят следующим образом:
- foo.com/ U/Профиль/Детали/6
- foo.com/u/Experience/Details/
- foo.com/u/SpecificController/Edit/8
Моя первая попытка была с IIS:
<rewrite>
<rules>
<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" />
</rule>
<rule name="Pretty User Redirect" enabled="false" stopProcessing="true">
<match url="User(.*)/(.*)" />
<action type="Redirect" url="u/{R:1}/{R:2}" />
<conditions>
</conditions>
</rule>
<rule name="User pretty URL Rewrite">
<match url="u/(.*)/(.*)" />
<action type="Rewrite" url="User{R:1}/{R:2}" />
</rule>
</rules>
</rewrite>
Это работало достаточно хорошо, за исключением Я хотел бы получить/у/на все мои ссылки, везде ...
Например: foo.com/Home/WhatWeDo/
выйдет как: foo.com/u/Home/WhatWeDo/
Это будет тогда 404.
Я использую конфигурацию маршрутизации по умолчанию
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
И все мои ссылки рисуются с помощью @ Html.ActionLink (...)
Если кто-то может пролить свет на это, это было бы весьма полезно.
Это кажется немного элегантным, я должен был бы сделать это для каждого из моих контроллеров? Есть ли способ добавить мой собственный код/модуль, который будет переписывать URL-адреса, как я хочу? – William
Возможно, вам нужны области в вашем проекте. Затем вы измените имена классов контроллеров и не будете беспокоиться о пользовательской маршрутизации/перезаписи. – Jasen