我正在使用带有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
对象?
答案 0 :(得分:0)
我有两个可能适合你的想法:
而不是字符串将返回网址类型更改为Uri对象
[HttpGet]
[AllowAnonymous]
public IActionResult Login(Uri returnUrl = null)
{
...
}
答案 1 :(得分:0)
如果您在浏览器的调试工具中注意到,浏览器不会将此#
及其后的任何文本发送到服务器,因此服务器不会知道它的存在所有
所以不要像下面那样,
http://localhost/Login/?returnUrl=http://localhost/#location1
执行此操作(请注意网址中#
的{{1}}编码
%23