RedirectToAction重定向查询参数?

时间:2011-09-11 16:12:45

标签: asp.net-mvc redirect controller-action

我正在开发一个ASP.NET MVC应用程序并且遇到了一个奇怪的事情。

我有两个这样的控制器动作:

[CustomAuthorize(Roles = SiteRoles.Admin)]
public ActionResult Review(int? id)

[CustomAuthorize(Roles = SiteRoles.Admin)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Review(AdReview data)

首先,我使用null作为参数调用Review操作,这将打开一个包含项列表的网页。这些项目将链接回第一个具有ID设置的Review动作。

如果已向审核操作提供了ID,则会为此项目返回编辑网页。在进行一些更改后点击提交时,我们将在第二次审核操作(帖子)结束。这里的项目将被保存。

到目前为止一切都很好。

现在,在上次审核操作(帖子)中,我最后得到了以下代码:

return RedirectToAction("Review", "Ad");

这会再次触发第一个Review动作,问题是它会提供以前的id吗?我的想法是RedirectToAction不提供任何参数?

1 个答案:

答案 0 :(得分:5)

  

我的想法是RedirectToAction不提供任何参数?

你的理解是错误的。如果目标URL包含具有相同名称的路由参数,则会自动转发模型状态中存在的参数。在这种情况下,您有一个id参数正在发布(可能作为输入字段的一部分或网址的一部分),当您重定向回原始的索引操作时,因为您的路由定义有{{1最后{}}方法将填充它。

作为避免此行为的解决方法,您可以明确指定在重定向时不应发送id参数:

RedirectToAction