返回网址功能

时间:2016-07-10 15:20:30

标签: c# routing asp.net-core asp.net-core-mvc request.querystring

我正在使用带有C#的ASP.NET Core MVC。

我的Login控制器上有一个功能,可以使用一个名为ReturnUrl的参数。想法是,如果在用户登录时设置了这个,那么我可以将它们重定向回页面。直接前进。

代码如下所示:

[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
     ...
}

但是,登录功能由MVC处理,主要内容使用Angular(版本1而不是2)。我的应用中的路线是(例如)http://localhost/#/location1

如果我使用(再次,只是一个示例)http://localhost/Login/?returnUrl=http://localhost/#/location1点击我的MVC登录页面,那么我在returnUrl参数中获得的所有内容都是http://localhost/。它会从#符号开始删除任何内容。

如何停止代码自动转义#符号并将完整的网址作为returnUrl对象?

2 个答案:

答案 0 :(得分:0)

我有两个可能适合你的想法:

  1. 尝试在发送请求时转发客户端中的返回网址。
  2. 而不是字符串将返回网址类型更改为Uri对象

    [HttpGet]
    [AllowAnonymous] 
    public IActionResult Login(Uri returnUrl = null)
    {
         ...
    }
    

答案 1 :(得分:0)

如果您在浏览器的调试工具中注意到,浏览器不会将此#及其后的任何文本发送到服务器,因此服务器不会知道它的存在所有

所以不要像下面那样,

http://localhost/Login/?returnUrl=http://localhost/#location1

执行此操作(请注意网址中#的{​​{1}}编码

%23