2012-11-09 93 views
0

我目前正在使用mvc。我有一个页面上有多个按钮,这会让事情变得复杂一点。然而,我正在使用的按钮调用jquery函数将数据发布到控制器。这按预期工作,数据到达动作,动作完成除了重定向之外的所有事情。MVC Jquery POST数据,从ActionResult重定向到url

该函数将数据发布到控制器,或允许控制器查看值并构建一个url然后重定向到。但是重定向不起作用,并且该函数按预期调用成功函数。如果我将数据返回到警报中,则页面的代码将返回到警报窗口中,而不是url。

下面是代码:

<input type="submit" value="Assign" name="Assign" onclick="doRedirect()" /> 

function doRedirect() { 
    var action = '@Url.Action("Redirect")'; 
    //alert(action); 
    var opt = { 
     type: "POST", 
     data: { 
      Team: $('#Team option:selected').val() 
     }, 
     url: action, 
     success: RedirectSuccess 

    }; 
    jQuery.ajax(opt); 
} 

    function RedirectSuccess(data) { 
     if (data != undefined) { 
      data;   
      } 
    } 

public ActionResult Redirect(string Team) 
    { 

     var hostName = "http://localhost/test/testpage.aspx?"; 
     var team = "&Team=" + Team; 


     var filterUrl = Team; 


     return Redirect(filterUrl);**//this doesnt work** 

    } 

回答

0

这是我做的,而不是。

public string Redirect(string Team) 
{ 

    var hostName = "http://localhost/test/testpage.aspx?"; 
    var team = "&Team=" + Team; 


    var filterUrl = hostname + Team; 


    return filterUrl; 
} 

function RedirectSuccess(data) { 
     if (data != undefined) { 
      window.location = data;   
      } 
    } 

,并在我的搜索成功

3

而不是从动作发送回一个重定向的结果,尝试发送回要重定向到URL。在客户端,您阅读请求的响应,并通过将window.location.href设置为您从服务器获得的URL来执行重定向。

在你的行动,你可以返回URL作为JSON例如:

return Json(new { url: filterUrl }); 

而在你的成功回调,你这样做是为了重定向:

if (data !== undefined && data.url !== undefined) { 
     window.location.href = data.url; 
} 
+0

我给它一个尝试,谢谢。 – RiggleBits

+0

+1 ...并祝贺你的10k! – musefan

+0

@musefan谢谢! :) –