Подтвердить что ты не робот

RedirectToAction и RedirectToRoute

В моем контроллере веб-страницы 1 я хочу перенаправить на веб-страницу 2, передав две переменные.

Я попытался использовать RedirectToRoute, но не могу заставить его работать; отображается неправильный URL. Затем я переключился на использование RedirectToAction.

мой код:

Маршрутизация

routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults
);

RedirectToAction (который работает)

return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });

RedirectToRoute (не работает)

return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });

О, и еще одна вещь, можете ли вы сделать необходимые параметры, а не факультативно.... если да, то как?

4b9b3361

Ответ 1

Отключить параметры по умолчанию, чтобы выполнить необходимые параметры:

    routes.MapRoute(
    "CreateAdditionalPreviousNames", // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);

Для перенаправления маршрута попробуйте следующее:

return RedirectToRoute(new 
{ 
    controller = "UsersAdditionalPreviousNames", 
    action = "Index", 
    userId = user.Id, 
    applicantId = applicant.Id 
});

Еще одна привычка, которую я взял от Стива Сандерсона, не называет ваши маршруты. Каждый маршрут может иметь нулевое имя, что позволяет явно указать все параметры:

    routes.MapRoute(
    null, // Route name
    "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
    new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);