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 });
О, и еще одна вещь, можете ли вы сделать необходимые параметры, а не факультативно.... если да, то как?
Ответы
Ответ 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" }
);