【问题标题】:change home page after first visit首次访问后更改主页
【发布时间】:2013-09-28 03:11:58
【问题描述】:

现在我的项目默认为主页/索引作为我的网站起始页。我想做到这一点,所以当有人第一次来到网站时,他们会去 Home/FirstTime,然后他们返回网站时会去 Home/Index

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

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 添加一条路线,但我不知道如何存储他们之前去过的网站的天气信息。

【问题讨论】:

  • 用户在加载此页面之前是否经过身份验证?如果是这样,您可以在数据库中设置一个标志,您可以在登录时检查该标志。如果用户通过身份验证后此页面没有加载,则无法保证,但 cookie 会在 90% 的时间内有效。

标签: asp.net asp.net-mvc-4


【解决方案1】:

添加 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");
        }
    }

您可以控制 cookie 的更多设置,例如过期等。但您现在应该知道方向了。

【讨论】:

  • cookies 可以被清除......在这种情况下,用户将再次看到第一页。
  • @Guanxi - 嗯是的 cookie 可以被清除,但是你能建议这个答案的替代方案吗?
  • 如果您想将访问的信息存储在您的服务器中,请考虑记录访问者的 IP 地址。但它有自己的问题,就像许多用户可能来自同一个 IP。
  • @Blaise - 考虑到 ISP 进行的所有代理和转发,IP 地址几乎毫无用处。
  • 同意。 IP 地址有其自身的限制。 Cookie 是最明显的方式,即使它可以在客户端清除。但它足以实现 dan_vitch 的目标。
猜你喜欢
  • 1970-01-01
  • 2020-11-03
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
相关资源
最近更新 更多