ASP.NET MVC Javascript重定向编码问题

ASP.NET MVC Javascript Redirect encoding issue

本文关键字:编码 问题 重定向 Javascript NET MVC ASP      更新时间:2023-09-26

我正试图使用Razor将URL注入Javascript变量,然后将浏览器重定向到该URL。我需要这样做,因为我的应用程序是完全基于AJAX的,并且我正在重定向到Facebook身份验证页面。

执行客户端重定向的视图如下所示:

@model Site.Core.ViewModels.Auth.FacebookCanvasLoginModel
<script type="text/javascript">
    var redirectUrl = '@(Model.FacebookLoginUrl)';
    window.top.location.href = redirectUrl;
</script>

Model.FacebookLogin URL的值由MVC中的URL.Action()帮助程序生成。

问题是实际重定向到的位置是:

http://dev.mydomain.net/Auth/RequestPermission?permissions=read_stream%2Cuser_photos&amp;redirectUrl=http%3A%2F%2Fdev.mydomain.net%2Fnewsfeed%3F_%3D1328276903643

其包含CCD_ 1而不是CCD_ 2

如何在不将&编码为&amp;的情况下将此URL传递给window.location.htm,同时将重定向URL保持为编码的URL字符串?

您需要获取Raw值,这样它就不会对值进行html编码。

@Html.Raw(Model.FacebookLoginUrl)

你把它放在javascript中,你会想逃离任何可能会让javascript出错的东西。所以试试这个:

var redirectUrl = @Html.Raw(Json.Encode(Model.FacebookLoginUrl))

供您参考:Json类