0

我正在使用 javascript 加载一个动作,并发现当调用动作方法时,参数之一“returnUrl”始终为空。我已经确认 returnUrl 使用 firebug 正确填充在 javascript 中,但是在执行 .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);
     }
4

1 回答 1

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
};

击中动作的屏幕截图;它返回两个值(查看监视窗口)

在此处输入图像描述

于 2012-07-15T01:08:39.523 回答