Вопрос

У меня есть два маршрута, которые я хочу отобразить в моем приложении ASP.NET MVC

  1. /Пользователь/Логин
  2. /Пользователь/{идентификатор пользователя}/{имя пользователя}/{действие} (например/Пользователь/1/бла/профиль)

Вот маршруты, которые я определил:

    routes.MapRoute(
        "Profile",
        "Users/{userID}/{username}/{action}",
        new { controller = "Users", action = "Profile" }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" }
    );

Пока что это отлично работает в большинстве случаев.Следующие URL-адреса работают с моей домашней страницы:

<%= Html.ActionLink((UsersController x) => x.Login(), "Login") %>
<%= Html.ActionLink((UsersController x) => x.Profile(1, "blah") %>

Они соответствуют (с уважением):

/Пользователи/Вход /Users/1/бла

Однако, как только я перешел к / Users / 1 / blah, URL-адрес для входа сразу же превращается в /Users /1 /blah/login .Есть идеи, как это исправить?

Это было полезно?

Решение

Вы хотите использовать <%=Html.RouteLink%>

Это очень похоже на у меня возникла проблема, которую вы можете просмотреть здесь

Другие советы

попадает ли ваш маршрут под фильтр авторизации?Требуется ли входить в систему для просмотра страницы /Users/1/blah?(то есть.есть ли атрибут [Authorize] в классе UsersController или в действии профиля?)

что ж, тогда, если это не фильтр авторизации, я весьма предлагаю вам реализовать это Инструмент для отладки маршрутизации в ваш проект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top