Projektuję nową dynamiczną stronę ze statycznej witryny. Mam całą trasę sortowaną, ale mam pytanie dotyczące mojej metody działania.Popraw kod kontrolera dla przekierowania 301
Poniżej znajduje się kod, ale podczas testowania i przeglądania nagłówków raportów Firebug, jeśli wyjmuję Response.End to przekierowanie 302 Zakładam, ponieważ ustawiłem 301, ale potem wywołuję inną akcję, która sprawia, że jest 302 , ale jeśli wstawię Response.End dostaję 301.
Domyślam się, że dodanie Response.RedirectLocation faktycznie wykonuje przekierowanie 301, więc zmienię moją wartość zwracaną na EmptyResult lub null, nawet jeśli ta linia kodu nigdy nie zostanie wykonany tylko po to, aby aplikacja się kompilowała?
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 });
}
Jak wspomniano w komentarzach do mojej odpowiedzi, w efekcie robisz dwa ActionResults tutaj. Przekierowanie 301 samo w sobie jest ActionResult, a następnie podążacie za nim z innym ** PO ** odpowiedzi zostały wysłane. –