我正在使用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);
}
答案 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
};
点击动作的屏幕截图;它返回两个值(看一下监视窗口)