Я новичок в MVC, поэтому буду признателен за любую помощь по следующим вопросам.
У меня есть AuthController для входа в систему, и если есть returnUrl, я бы хотел вернуться к этому URL. Кажется, он ищет в текущем контроллере (Auth) returnUrl (/ App / Trips), но если я укажу контроллер, он будет работать нормально.
Есть идеи, почему RedirectToAction (returnUrl) не работает, а RedirectToAction ("Trips", "App") работает?
Интересно, это как-то связано с картированием? Вот что у меня есть:
Отображение в Startup.cs
config.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "App", action = "Index" }
);
AuthController.cs
[HttpPost]
public async Task<ActionResult> Login(LoginViewModel vm, string returnUrl)
{
if(ModelState.IsValid)
{
var signInResult = await _signInManager.PasswordSignInAsync(vm.Username, vm.Password, true, false);
if (signInResult.Succeeded)
{
if(string.IsNullOrWhiteSpace(returnUrl))
{
return RedirectToAction("Trips", "App");
}
else
{
//return RedirectToAction(returnUrl); // Doesn't work - tries to find /App/trips under /Auth
return RedirectToAction("Trips", "App"); // Works! goes straight to /App/trips
}
}
else
{
ModelState.AddModelError("", "Username or Password is incorrect");
}
}
return View();
}
значение returnUrl, когда оно выше run = "/ App / trips"
ПРОЙДИТЕ, когда
return RedirectToAction("Trips", "App");
Идет к http://localhost:12345/App/Trips, как и ожидалось
FAIL когда
return RedirectToAction(returnUrl);
Страница не найдена http://localhost:12345/Auth/%2FApp%2Ftrips