如何使用RedirectToAction重定向到不同控制器的默认操作?

时间:2011-03-07 21:36:44

标签: c# asp.net-mvc-3 asp.net-mvc-routing

我正在尝试使用以下代码从http://mywebsite/Home/执行RedirectToAction:

return RedirectToAction("Index","Profile", new { id = formValues["id"] });

上面的代码将成功地带我去

http://mywebsite/Profile/Index/223224

我需要做些什么才能将其重定向到

http://mywebsite/Profile/223224

谢谢。

我想出了如何做到这一点。

首先,我必须添加自定义路由规则:

routes.MapRoute("Profile", "Profile/{id}", new { controller = "Profile", action = "Index", id = UrlParameter.Optional });

然后我可以做以下事情:

[AcceptVerbs(HttpVerbs.Post)]
public RedirectResult Index(FormCollection formValues)
{
   return Redirect("~/Survey/" + formValues["Id"]);
}

3 个答案:

答案 0 :(得分:1)

我认为你可以做到:

return RedirectToAction("","Profile", new { id = formValues["id"] });

答案 1 :(得分:1)

我偶然发现了完全相同的问题。通过使用路由名称重定向来解决它:

return RedirectToRoute("profile", new { action = "" });

所有变量都会被记住,所以如果你有像/ {x} / {y} / Profile / {action} / {id}之类的网址,你只需像我一样清除行动。

答案 2 :(得分:0)

假设您的/控制器名为“Home”

Return RedirectToRoute(new {controller="Home",action="Index",id=formValues["id"]});

嗯,我想这仍然是/ Index / num虽然......我不确定你是否可以在没有自定义路由的情况下将索引位遗漏掉。