2012-07-14 67 views
0

我正在使用JavaScript加載一個Action,並發現當調用動作方法時,其中一個參數「returnUrl」始終爲空。我已經確認returnUrl在JavaScript中使用螢火蟲填充,但在執行.load函數和操作方法之間的某處,returnUrl的值會丟失並設置爲null。我發現如果我刪除了「id」參數並且只有returnUrl參數,那麼returnUrl具有正確的值。我花了很多時間試圖弄清楚這裏發生了什麼,並且完全陷入困境,我會感謝一些幫助。MVC3動作調用Javascript ReturnUrl參數始終爲空

我的javascript:

<!-- Review Dialog Popup --> 
<script type="text/javascript"> 
function showWriteReviewDialog(gameId, returnUrl) { 
    if($("#Review").length == 0) 
    { 
     var url = "@Url.Action("WriteUserReview", "UGDBUser", new { id = "PLACEHOLDER", returnUrl = Request.Url.ToString() })"; 

     // ajax load 
     $('#writereview').load(url.replace('PLACEHOLDER', gameId)); 
    } else { 
     // clear summary & reviewtext fields 
     $('#summary,#reviewtext').val(''); 

     //reopen the write review dialog which was previously rendered 
     $("#Review").dialog({ 
      modal: true, 
      autoOpen: true, 
      resizeable: false 
     }); 
    } 
}; 
</script> 

我的簡單化操作方法:

 [Authorize] 
    public ActionResult WriteUserReview(Guid id, string returnUrl) 
    { 
     return Redirect(returnUrl); 
    } 
+0

所以你證實,確實到達服務器包括RETURNURL參數值(看看手錶窗口)?路線如何設置? – 2012-07-14 23:40:47

回答

1

一定有什麼問題產生的URL。還要確保id是一個guid。這是一個例子。

選項1

function showWriteReviewDialog(gameId, returnUrl) { 

    var url = '@Url.Action("TestParams", "Home")?id=' + gameId + '&returnUrl=' + returnUrl; 
    $("#writereview").load(url); 

    //rest of your operations 
}; 

選項2

上擊球動作
function showWriteReviewDialog(gameId, returnUrl) { 

    var url = '@Url.Action("TestParams", "Home", new { id = "guid_replace", returnUrl = "url_replace"})'; 
    url = url.replace('guid_replace', gameId); 
    url = url.replace('url_replace', returnUrl); 

    $("#writereview").load(url); 

    //rest of your operations 
}; 

屏幕快照;兩者都返回

enter image description here

+0

我使用了選項1,它工作完美,我不確定爲什麼網址是壞的我想這可能是與它是如何與多個參數生成的東西。非常感謝你的幫助! – 2012-07-15 17:17:00