W ASP.NET MVC można dość łatwo zwrócić ActionResult przekierowania:
return RedirectToAction("Index");
or
return RedirectToRoute(new { controller = "home", version = Math.Random() * 10 });
To faktycznie da przekierowanie HTTP, które zwykle jest w porządku. Jednak podczas korzystania z Google Analytics powoduje to duże problemy, ponieważ oryginalny odnośnik jest zagubiony, więc Google nie wie, skąd pochodzisz. Spowoduje to utratę przydatnych informacji, takich jak terminy wyszukiwarek.
Na marginesie, ta metoda ma tę zaletę, że usuwa wszelkie parametry, które mogły pochodzić z kampanii, ale nadal pozwala mi przechwytywać je po stronie serwera. Pozostawienie ich w ciągu zapytania powoduje, że ludzie tworzą zakładki, twitter lub blogują łącze, którego nie powinni. Widziałem to kilka razy, gdy ludzie umieszczali na Twitterze linki do naszej witryny zawierające identyfikatory kampanii.
W każdym razie piszę kontroler „bramy” dla wszystkich przychodzących wizyt w witrynie, które mogę przekierować w inne miejsca lub alternatywne wersje.
Na razie bardziej zależy mi na Google (niż na przypadkowym dodawaniu zakładek) i chcę móc wysłać kogoś, kto odwiedziłby /
stronę, którą dostałby, gdyby przeszła /home/7
, czyli wersję 7 strony domowej.
Tak jak powiedziałem wcześniej, jeśli to zrobię, stracę zdolność Google do analizowania osoby odsyłającej:
return RedirectToAction(new { controller = "home", version = 7 });
To, czego naprawdę chcę, to plik
return ServerTransferAction(new { controller = "home", version = 7 });
co da mi ten widok bez przekierowania po stronie klienta. Nie sądzę jednak, żeby coś takiego istniało.
Obecnie najlepszą rzeczą, jaką mogę wymyślić, jest skopiowanie całej logiki kontrolera HomeController.Index(..)
w mojej GatewayController.Index
akcji. Oznacza to, musiałem przenieść 'Views/Home'
się 'Shared'
więc było dostępne. Musi być lepszy sposób ?? ..
if
stwierdzenie jest zbyt kuszące.
RouteBase
, abyś mógł umieścić if
tam swoje oświadczenie zamiast zginać wszystko do tyłu, aby przeskoczyć z jednego kontrolera do drugiego?
ServerTransferAction
, które próbujesz odtworzyć? Czy to jest rzeczywista rzecz? (nie mogłem znaleźć żadnych informacji na ten temat ... dzięki za pytanie, przy okazji, odpowiedź poniżej jest