0

JavaScriptを使用してアクションをロードしていますが、アクションメソッドが呼び出されると、パラメーターの1つ「returnUrl」が常にnullになることがわかりました。ファイアバグを使用してreturnUrlがjavascriptに正しく入力されていることを確認しましたが、.load関数の実行とアクションメソッドの間のどこかで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 に答える