【问题标题】:ASP.NET MVC Javascript Redirect encoding issueASP.NET MVC Javascript 重定向编码问题
【发布时间】:2012-02-03 14:01:11
【问题描述】:

我正在尝试使用 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

其中包含 &amp;amp;redirectUrl= 而不是 &amp;redirectUrl=

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

【问题讨论】:

  • FacebookLoginUrl 方法中的代码是什么?它返回了什么?似乎这种方法是问题所在,并且在不应该添加编码时添加了编码。 (顺便说一下,为了争论,&lt;a href="http://site.com/?foo&amp;amp;bar"&gt;&amp;amp;proper way of generating a URL。)

标签: javascript asp.net-mvc-3 razor


【解决方案1】:

您需要获取原始值,以便它不对值进行 html 编码。

@Html.Raw(Model.FacebookLoginUrl)

您将其放入 javascript 中,并且您想要逃避任何可能弄乱您的 javascript 的东西。所以试试这个:

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

供您参考:Json class

【讨论】:

  • 传奇!谢谢!!很高兴给你超过 1000 分 - 我已经坚持了好几个小时了 :-)
猜你喜欢
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
相关资源
最近更新 更多