2011-03-07 93 views
1

我使用下面的代码试图从http://mywebsite/Home/做一个RedirectToAction:如何使用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"]); 
} 
+1

你能告诉我们你的路线定义吗? – frennky 2011-03-07 21:44:39

+0

我从来没有手动定义过一个,所以我假设我正在使用默认路由定义。 – atbebtg 2011-03-07 21:48:47

回答

1

我认为你可以这样做:

​​
+0

我试过了,它仍然把我带到http:// mywebsite/Profile/Index/223224 – atbebtg 2011-03-07 21:40:55

+0

因为这个原因,我确实有更好的运气将默认路由定义更改为/ {controller}/{id}/{行动}。您可能需要第二条路线/ {控制器}/{动作}和一些警卫来帮助确定哪些是正确的。除了最简单的情况之外,路由并不是一件容易的事情:-) – 2011-03-07 21:54:19

+0

是的,除非是最简单的情况,否则它绝非易事。我很难学习这一点! :) 不管怎么说,还是要谢谢你! – atbebtg 2011-03-07 22:00:21

0

假设你的/控制器被命名为“Home”

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

嗯,我想这将仍然是/索引/数量虽然...我不知道如果你可以离开索引位那里没有自定义路由。

1

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

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

所有变量将被记住,所以如果你有网址像/ {X}/{Y} /资料/ {行动}/{ID}你只需要像我一样清除行动。

相关问题