代码之家  ›  专栏  ›  技术社区  ›  User987

.NET MVC 5在页面加载时重置cookie

  •  0
  • User987  · 技术社区  · 7 年前

    我有一个奇怪的问题,我试图在Razor视图中设置cookie值,如下所示:

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
        HttpCookie e = new HttpCookie("d");
        e.Value = @Url.RequestContext.RouteData.Values["id"].ToString();
        e.Expires = DateTime.Now.AddMonths(999); // expires after 30 days
        Response.Cookies.Add(e);
    }
    

    然后我根据这个cookie值形成URL,如下所示:

    @foreach(//some collection)
    {
      <a href="/Items/Index/@Request.Cookies["d"].Value"></a>
    }
    

    user123
    

    和下一个路由id值:

    user1234
    

    /Items/Index/user123
    

    当我第二次将路由id值作为user1234传递时,链接仍然保持不变,如下所示:

    /项目/索引/用户123
    

    只有第三次刷新页面时,URL才会更改为:

    /Items/Index/user1234
    

    我想在每次加载页面时将cookie值设置为一个新值,然后根据存储在cookie中的路由id值形成url。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   JuanR    7 年前

    视图第一次加载id user123 。引擎执行响应并使用此值创建cookie。饼干将与 但它只能在 要求 .

    在第二个 user1234 ,cookie现在可用,其值来自上一个 回答 用户123 ),因此您可以在链接中获得该值,尽管您现在正在将其设置为下一个值( )在 回答 .