admin管理员组

文章数量:1428258

I'm trying to use Razor to inject a URL into a Javascript variable, and then redirect the browser to that URL. I need to do it this way as my application is fully AJAX based and I'm redirecting to a Facebook Authentication page.

The view that performs the client-side redirect looks like this:

@model Site.Core.ViewModels.Auth.FacebookCanvasLoginModel

<script type="text/javascript">
    var redirectUrl = '@(Model.FacebookLoginUrl)';

    window.top.location.href = redirectUrl;
</script>

The value of Model.FacebookLogin URL is generated by the Url.Action() helper in MVC.

the problem is that the location that is actually redirected to is:

;amp;redirectUrl=http%3A%2F%2Fdev.mydomain%2Fnewsfeed%3F_%3D1328276903643

which contains &amp;redirectUrl= instead of &redirectUrl=

How do I pass this URL to window.location.href without the & being encoded to &amp; whilst maintaining the redirectUrl as an encoded URL string?

I'm trying to use Razor to inject a URL into a Javascript variable, and then redirect the browser to that URL. I need to do it this way as my application is fully AJAX based and I'm redirecting to a Facebook Authentication page.

The view that performs the client-side redirect looks like this:

@model Site.Core.ViewModels.Auth.FacebookCanvasLoginModel

<script type="text/javascript">
    var redirectUrl = '@(Model.FacebookLoginUrl)';

    window.top.location.href = redirectUrl;
</script>

The value of Model.FacebookLogin URL is generated by the Url.Action() helper in MVC.

the problem is that the location that is actually redirected to is:

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

which contains &amp;redirectUrl= instead of &redirectUrl=

How do I pass this URL to window.location.href without the & being encoded to &amp; whilst maintaining the redirectUrl as an encoded URL string?

Share Improve this question edited Feb 3, 2012 at 14:42 reach4thelasers asked Feb 3, 2012 at 14:01 reach4thelasersreach4thelasers 27k23 gold badges94 silver badges125 bronze badges 1
  • 1 What's the code within the FacebookLoginUrl method? What's it returning? It seems like this method is the issue and is adding the encoding when it shouldn't. (By the way, for argument's sake, having <a href="http://site./?foo&amp;bar"> with the &amp; is the proper way of generating a URL.) – Brad Christie Commented Feb 3, 2012 at 14:46
Add a ment  | 

1 Answer 1

Reset to default 8

You need to get the Raw value so that it doesn't html encode the value.

@Html.Raw(Model.FacebookLoginUrl)

You are putting it inside javascript, and you'll want to escape anything that could goof up your javascript. So try this:

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

For your reference: Json class

本文标签: ASPNET MVC Javascript Redirect encoding issueStack Overflow