我想知道是否有人可以帮忙,我想为当前页面上的当前用户保存一个全局变量,我认为Sessions在mvc中不好?ASP.NET MVC:保存状态?使用会话?
我应该举一个我在做什么的例子。基本上我有一个控制器和它进入(动作=索引)和i检查
Request.UrlReferrer
而如果它包含一个值,该值表示它从另一个地方即谷歌例如到达。我将这些信息写入日志。现在在控制器的这个阶段一切都很好。
但后来在我的网页我想回顾在控制器的方法(使用jQuery和Ajax)来处理一些跟踪,但记住我仍然在同一个页面中,我使用
Request.UrlReferrer
,但在这个阶段它始终是页面的名称,因为引用者是启动ajax调用和“不”谷歌的页面。好吧,看来我需要将值或UrlReferrer保存到全局变量/每个用户,以便当我重新进入我的控制器时,我可以检查这个SAVED变量而不是Request.UrlReferrer。
有没有人知道最简单的方法来做到这一点?
这里是我的网页
public ActionResult Index()
{
// Process tracking - Initial entry
string ip = Request.UserHostAddress.ToString();
string referrer = null;
if (Request.UrlReferrer !=null)
referrer = Request.UrlReferrer.ToString();
// WRITE THE LOGS HERE!!!!
return View();
}
public ActionResult ProcessTracking()
{
// Reprocess tracking
// BUt can't use Request.UrlReferrer as it returns my calling page and not google
// for example
//string ip = Request.UserHostAddress.ToString();
//string referrer = null;
//if (Request.UrlReferrer != null)
// referrer = Request.UrlReferrer.ToString();
//return View();
}
谢谢,是的,这看起来正是我想要的!我只是测试它,它似乎工作,但我有一个问题。它是否留在那里,直到我在ASPNET MVC 1.0中读取它?或不? ..我假设它不是一个全局变量,因此,如果我有2个用户变量不会覆盖另一个? – 2009-12-03 16:28:58
TempData的范围在请求的上下文中,因此它不会被同时用户覆盖。在MVC 1.0中,TempData将在下一次控制器调用时被清除。这意味着如果有一个控制器操作被调用(包括ajax调用),数据将只能在VERY NEXT调用中使用。如果您需要更多呼叫的数据,则需要让每个操作“触摸”数据: TempData [“referrer”] = TempData [“referrer”]; 有点哈克?是的,但MVC团队已经修复了MVC 2的问题,所以它会变得更好! – 2009-12-03 16:34:35
哇杰夫,谢谢..只是想我需要! – 2009-12-03 16:37:51