2012-11-09 23 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謝謝! :) –