2013-09-27 32 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