如何在ASP.NETMVC中模拟Server.Transfer?

如何在ASP.NETMVC中模拟Server.Transfer?

在ASP.NETMVC中,可以很容易地返回重定向ActionResult:

 return RedirectToAction("Index");

 or

 return RedirectToRoute(new { controller = "home", version = Math.Random() * 10 });

这实际上会给出一个HTTP重定向,这通常是很好的。然而,当使用Google分析时,这会引起很大的问题,因为原来的推荐人丢失了,所以Google不知道你来自哪里。这会丢失有用的信息,如任何搜索引擎术语。

顺便提一句,这种方法的优点是删除了可能来自运动的任何参数,但仍然允许我捕获服务器端的参数。如果把它们放在查询字符串中,人们就会出现书签、推特或博客链接,而这是他们不应该看到的。我见过好几次,人们在Twitter上链接到包含活动ID的网站。

无论如何,我写了一个‘网关’控制器,所有进入网站访问,我可以重定向到不同的地方或替代版本。

目前,我更关心谷歌(而不是偶然的书签),我希望能够派人访问。/如果他们去的话,他们会得到的那一页/home/7,这是主页的第7版。

正如我之前所说,如果我这样做,我就失去了谷歌分析推荐人的能力:

 return RedirectToAction(new { controller = "home", version = 7 });

我真正想要的是

 return ServerTransferAction(new { controller = "home", version = 7 });

这会让我在没有客户端重定向的情况下看到这个视图。不过,我不认为这样的事情存在。

目前,我能想到的最好的事情就是复制整个控制器逻辑。HomeController.Index(..)在我的GatewayController.Index行动。这意味着我得搬家'Views/Home''Shared'所以它是可以访问的。一定有更好的办法吗?


慕斯709654
浏览 463回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP