使用RedirectToAction而不传递查询字符串参数/路由值

时间:2014-10-22 21:43:24

标签: c# asp.net-mvc query-string routevalues

我有一个" Thingy"控制器看起来像:

[HttpPost]
public ActionResult DeleteConfirmed(long? id) {
    // <Validate ID, delete associated records>
    return RedirectToAction("Index", "Thingy");
}

但是,RedirectToAction不断使用参数中的id填充其路由值,而我希望将id保留为null,以便重定向到www.mywebsite.com/Thingy而不是www.mywebsite.com/Thingy/1

事实上,我可以直接访问www.mywebsite.com/Thingy并按预期工作。

我试过了:

RedirectToAction("Index", "Thingy")
RedirectToAction("Index", "Thingy", new { })
RedirectToAction("Index", "Thingy", new { id = (long?)null })

最后一个特别有趣,因为它重定向到www.mywebsite.com/Thingy?id=1,其他人重定向到www.mywebsite.com/Thingy/1

1 个答案:

答案 0 :(得分:11)

在第一个示例中的RedirectToAction()之前添加以下内容:

RouteData.Values.Remove("id");

我感觉您指定的路线值正在与原始路线值合并。