Изменение приоритета каждого маршрута просто получает свое действие Метод работает

У меня была проблема, и она была решена по приведенной ниже ссылке:

Код активации имеет значение null в моем вводе метода, когда я нажимаю ссылку подтверждения электронной почты.

Но у меня есть другой вопрос. Когда я добавил еще один такой маршрут:

routes.MapRoute( name: "Password", url: "{controller}/{action}/{passwordResetCode}", defaults: new { controller = "Authentication", action = "ResetPassword" } );

Предыдущий маршрут не работает. Я имею в виду, что он снова получает нулевое значение. Всякий раз, когда я хочу вызвать его метод, я вручную помещаю его маршрут в начало других маршрутов! И это заставляет работать! Вы знаете, что мне нужно изменить приоритет каждого маршрута, когда я хочу вызвать его метод. О.О. Есть идеи? Заранее спасибо.

Это полный файл rout.config в моем проекте.

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
       name: "Password",
       url: "{controller}/{action}/{passwordResetCode}",
       defaults: new { controller = "Authentication", action = "ResetPassword" }
   );
        routes.MapRoute(
       name: "Activation",
       url: "{controller}/{action}/{activationCode}",
       defaults: new { controller = "Authentication", action = "VerifyAccount" }
   );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

И это ActionMethods:

 [HttpGet]
    public ActionResult ResetPassword(string passwordResetCode)
    {
        ResetPasswordViewModel resetPasswordViewModel = new ResetPasswordViewModel();
        ResponseMessage<User> passwordResetRequestedUser = _userService.ResetPasswordCode(passwordResetCode);
        if (passwordResetRequestedUser.IsSuccess )
            resetPasswordViewModel.ResetCode = passwordResetCode;
            return View(resetPasswordViewModel);
    }

 [HttpGet]
    public ActionResult VerifyAccount(string activationCode)
    {
        if (activationCode != null)
        {
            ResponseMessage<User> verifiedUser = _userService.VerifyAccount(activationCode);
            ModelState.AddModelError("AccountVerification", verifiedUser.ErrorMessages[0]);
            return View(verifiedUser.Result.ConvertToUserViewModel());
        }
        return new HttpNotFoundResult();
    }

Какой еще маршрут? (вам нужно включить это в свой вопрос). И показанный вами маршрут также соответствует маршруту по умолчанию (и почему вы приняли неправильный ответ в другом вопросе?)

user3559349 30.04.2018 09:30

привет @StephenMuecke. Спасибо за внимание. Это было не так. все работало правильно. После того, как я получил результат из предыдущего вопроса, мне нужно было добавить другой маршрут. Конечно. Я собираюсь редактировать свой вопрос.

Atefeh Mohammadpoor 30.04.2018 09:35

Это неверно! (см. мой ответ на другой ваш вопрос). И ваш вопрос должен включать код, а не его изображения.

user3559349 30.04.2018 09:42

Хорошо, @StephenMuecke, я сделаю то, что вы предложили.

Atefeh Mohammadpoor 30.04.2018 09:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
177
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю вам точно указать контроллер и действие, которые вы собираетесь использовать на настраиваемых маршрутах, чтобы не переопределять маршрут по умолчанию.

Бывший.

routes.MapRoute(
   name: "Activation",
   url: "Authentication/VerifyTheAccount/{activationCode}",
   defaults: new { controller = "Authentication", action = "VerifyTheAccount", activationCode = UrlParameter.Optional }
   );

routes.MapRoute(
   name: "PasswordReset",
   url: "Authentication/ResetPassword/{passwordResetCode}",
   defaults: new { controller = "Authentication", action = "ResetPassword", passwordResetCode = = UrlParameter.Optional }
   );

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

Подскажите, пожалуйста, как правильно это сделать?

Atefeh Mohammadpoor 30.04.2018 09:49

Посмотрите мой ответ, и вы можете поместить его в свой файл route.config. Первые 2 маршрута предназначены специально для URL-адресов проверки и сброса пароля. Вы должны указать контроллер и действие в URL-адресе. Ваши маршруты прямо сейчас всегда используют первый зарегистрированный маршрут, потому что установленный вами URL-адрес принимает любой контроллер и действие, которое соответствует стандартному формату контроллера / действия / параметра, но, поскольку вы указали другое имя параметра, URL-адреса, которые ожидают параметр, и не Если указанное имя параметра становится равным нулю.

Luke Villanueva 30.04.2018 10:40

Понятно. Спасибо :)

Atefeh Mohammadpoor 30.04.2018 11:36

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