来自Javascript的MVC3 Action调用ReturnUrl参数始终为null

时间:2012-07-14 21:02:16

标签: javascript asp.net-mvc-3

我正在使用javascript加载一个Action并发现当调用action方法时,其中一个参数“returnUrl”始终为null。我已经确认使用firebug在javascript中正确填充了returnUrl,但在执行.load函数和action方法之间的某处,returnUrl的值将丢失并设置为null。我发现,如果我删除“id”参数并且只有“returnUrl”参数,则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);
     }

1 个答案:

答案 0 :(得分:1)

生成的网址一定有问题。还要确保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