C# 如何使用字符串重定向到操作

C# 如何使用字符串重定向到操作,c#,model-view-controller,C#,Model View Controller,我是MVC的新手,因此非常感谢您在以下方面的帮助 我有一个用于登录的AuthController,如果有返回url,我想返回到该url。它似乎在当前控制器(Auth)中查找returnUrl(/App/Trips),但是如果我指定了控制器,它就可以正常工作 关于为什么RedirectToAction(returnUrl)不起作用,而RedirectToAction(“Trips”,“App”)起作用,有什么想法吗 我想知道它是否与映射有关?这就是我所拥有的: Startup.cs中的映射 con

我是MVC的新手,因此非常感谢您在以下方面的帮助

我有一个用于登录的AuthController,如果有返回url,我想返回到该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();
}
一切如期进行

失败时

return RedirectToAction(returnUrl);

页面未找到错误

重定向到操作
中,我们需要将控制器名称和操作名称作为参数传递 而
重定向()
只需要Url

你所需要的就是做以下事情

   return Redirect(returnUrl);

您的参数不是您所期望的
%2F
/
的URL编码版本,您试图将用户重定向到
/Auth/%2FApp%2Ftrips
而不是
/Auth//App/Trips
   return Redirect(returnUrl);