我从一个静态的网站设计一个新的动态网站。我有路线全部排序,但我有我的行动方法的问题。正确的控制器代码重定向
下面是代码,但是当测试并查看Firebug报告的标题时,如果我取出Response.End,它是我假设的302重定向,因为我设置了301,但接着调用另一个使其成为302 ,但如果我把Response.End我得到一个301.
我猜测,添加Response.RedirectLocation实际上是301重定向,所以我因此将我的返回值更改为EmptyResult或null即使该行的代码永远不会被执行,所以应用程序编译?
public ActionResult MoveOld(string id)
{
string pagename = String.Empty;
if(id == "2")
{
pagename = WebPage.SingleOrDefault(x => x.ID == 5).URL;
}
Response.StatusCode = 301;
Response.StatusDescription = "301 Moved Permanently";
Response.RedirectLocation = pagename;
Response.End();
return RedirectToAction("Details", new { pageName = pagename });
}
正如评论我的答复中提到,你是在这里的影响做了两个ActionResults。 301重定向本身就是一个ActionResult,然后你用另一个** AFTER **跟踪它的响应已发送。 – 2009-11-09 14:30:09