【发布时间】:2010-12-14 04:38:23
【问题描述】:
我正在从静态网站设计一个新的动态网站。我已经对路线进行了排序,但我对我的 Action 方法有疑问。
下面是代码,但是在测试和查看 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 });
}
【问题讨论】:
-
正如我的回答中的 cmets 所述,您实际上在这里执行了两个 ActionResults。 301 重定向本身就是一个 ActionResult,然后您将在发送响应之后用另一个 AFTER 跟进它。
标签: asp.net asp.net-mvc asp.net-mvc-routing