从Controller Action返回301重定向

Mic*_*tum 19 asp.net-mvc

在ASP.net MVC上,让控制器将301重定向返回到外部站点的"正确"方法是什么?

各种RedirectTo-Function似乎只返回我手动映射的相对链接或路由,但没有办法说"执行301重定向到http://example.com ".

我想我可以设置Response.StatusCode或使用Response.Redirect,但是它应该在MVC中完成吗?或者是否有正式的"正确方式"来执行重定向?

更新:与此同时,我为此写了一个ActionResult:PermanentRedirectResult

更新2:自ASP.net 4.0以来,永久重定向是框架的一部分.

Ben*_*eth 19

使用

Response.RedirectPermanent("http://www.google.com"); 
Run Code Online (Sandbox Code Playgroud)

或者从控制器返回ActionResult类型:

return RedirectPermanent("http://www.google.com"); 
Run Code Online (Sandbox Code Playgroud)

由ASP.net 4.0框架提供.


Jas*_*orn 1

由于您正在谈论重定向到您对路由一无所知的 URL(无论是内部页面(想想经典的 ASP.NET)还是某些外部资源),那么您唯一能做的就是设置状态代码,并发送用户的浏览器。

在 MVC 的这条链中,您担心如何让用户访问他们的视图,但该视图不受您的控制,甚至可能根本不是视图。因此,最终您在这种情况下会尽力而为,并且据我所知,没有违反任何 MVC“规则”。

我希望这有帮助。

  • 这就是我现在选择的方法,我将 Response.StatusCode 设置为 301,将 Response.RedirectLocation 设置为目标 URL (2认同)