我正试图使用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&redirectUrl=http%3A%2F%2Fdev.mydomain.net%2Fnewsfeed%3F_%3D1328276903643
其包含CCD_ 1而不是CCD_ 2
如何在不将&
编码为&
的情况下将此URL传递给window.location.htm,同时将重定向URL保持为编码的URL字符串?
您需要获取Raw值,这样它就不会对值进行html编码。
@Html.Raw(Model.FacebookLoginUrl)
你把它放在javascript中,你会想逃离任何可能会让javascript出错的东西。所以试试这个:
var redirectUrl = @Html.Raw(Json.Encode(Model.FacebookLoginUrl))
供您参考:Json类