У ASP.NET MVC ви можете повернути перенаправлення ActionResult досить легко:
return RedirectToAction("Index");
or
return RedirectToRoute(new { controller = "home", version = Math.Random() * 10 });
Це фактично дасть переспрямування HTTP, що зазвичай нормально. Однак при використанні аналітики Google це спричиняє великі проблеми, оскільки початковий референт втрачається, тому Google не знає, звідки ви прийшли. Це втрачає корисну інформацію, таку як будь-які пошукові терміни.
Як зауваження, цей метод має перевагу в тому, щоб видалити будь-які параметри, які можуть бути отримані з кампаній, але все ж дозволяє мені захоплювати їх стороною сервера. Залишаючи їх у рядку запиту, люди призводять до закладки чи щебетування або блогу посилання, яке їм не слід. Я бачив це кілька разів, коли люди перекручували посилання на наш сайт, що містять ідентифікатори кампанії.
У будь-якому разі я пишу контролер «шлюзу» для всіх вхідних відвідувань сайту, який я можу переадресувати в різні місця або альтернативні версії.
На даний момент я більше дбаю про Google (ніж випадкові закладки), і я хочу, щоб я могла надсилати того, хто відвідує /
сторінку, яку вони отримають, якби перейти /home/7
, а це версія 7 домашньої сторінки.
Як я вже говорив раніше Якщо я роблю це, я втрачаю здатність google аналізувати реферера:
return RedirectToAction(new { controller = "home", version = 7 });
Те, що я дійсно хочу, це
return ServerTransferAction(new { controller = "home", version = 7 });
що дасть мені такий погляд без перенаправлення на сторону клієнта. Я не думаю, що таке існує.
В даний час найкраще, що я можу придумати, - це дублювати всю логіку контролера HomeController.Index(..)
в моїй GatewayController.Index
дії. Це означає , що я повинен був рухатися 'Views/Home'
в 'Shared'
так що це було доступно. Має бути кращий спосіб ?? ..
if
твердження є занадто спокусливим рішенням.
RouteBase
щоб ви могли поставити if
там свою заяву, а не згинати все назад, щоб перейти з одного контролера на інший?
ServerTransferAction
що ви намагалися повторити? Це реальна річ? (не вдалося знайти жодної інформації про нього ... дякую за запитання, btw, відповідь нижче чудова)