2013-09-27 31 views
3

现在我的项目默认为Home/Index作为我的网站的首页。我想使它所以第一次有人来到现场,他们去主页/ FirstTime和所有后续时间他们回到网站,他们去首页/索引首次访问后更改主页

我有这样的代码在RouteConfig.cs在App_Start文件夹

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

     ); 

    } 
} 

我猜我需要为Home/FirstTime添加一条路线,但是我不知道如何将预先存放在网站上的天气信息存储起来。

+0

使用cookies !!!! – EkoostikMartin

+0

在加载此页面之前,用户是否已通过身份验证?如果是这样,您可以在数据库中设置一个标志,您可以在登录时进行检查。如果在用户通过身份验证后未加载此页面,则无法保证,但Cookie将在90%的时间内运行。 –

回答

6

添加一个cookie以识别用户是否是第一次访问者。

public ActionResult Index() 
    { 
     string cookieName = "NotFirstTime"; 
     if(this.ControllerContext.HttpContext.Request.Cookies.AllKeys.Contains(cookieName)) 
     { 
      // not first time 
      return View(); 
     } 
     else 
     { 
      // first time 
      // add a cookie. 
      HttpCookie cookie = new HttpCookie(cookieName); 
      cookie.Value = "anything you like: date etc."; 
      this.ControllerContext.HttpContext.Response.Cookies.Add(cookie); 
      // redirect to the page for first time visit. 
      return View("FirstTime"); 
     } 
    } 

还有更多的设置可以控制,比如过期等。但是您应该知道现在的方向。

+0

Cookie可以被清除......在这种情况下,用户将再次看到第一页。 – Guanxi

+0

@Guanxi - umm是的cookie可以被清除,但你可以建议一个替代这个答案? – EkoostikMartin

+0

如果要将访问信息存储在服务器中,请考虑记录访问者的IP地址。但它有自己的问题,就像很多用户可能来自同一个IP一样。 – Blaise