如何在 _layout 中设置 cookie

how to set cookies in _layout

当网站启动时,我有一个功能可以检查是否有用户 cookies-

        foreach (var cookie in HttpContextAccessor.HttpContext.Request.Cookies)
    {
        if (cookie.Key == "OrderLoginDetails")
        {

            Customer.Cookie = cookie.Value;
        }
    }

效果很好!

当我尝试制作新的 cookie 时问题开始了...

如何在布局文件中制作新的 cookie?

我这样试过-

 if (Customer.Cookie == null)
    {
        var newCust = Customer.newCustomer();
        var cookieOptions = new CookieOptions
        {
            Path = "/",
            HttpOnly = false,
            IsEssential = true, //<- there
            Expires = DateTime.Now.AddMonths(1),
        };
        Response.Cookies.Append("OrderLoginDetails", Customer.CustomerCode + Customer.CustomerMail, cookieOptions);


    }

但是不行。

此致

如果代码在布局或其他 Razor 视图文件中,您可以使用 Context 属性 访问 HttpContext 例如

foreach (var cookie in Context.Request.Cookies)
{
    if (cookie.Key == "OrderLoginDetails")
    {
        Customer.Cookie = cookie.Value;
    }
}

Context.Response.Cookies.Append("OrderLoginDetails", Customer.CustomerCode + Customer.CustomerMail, cookieOptions);

虽然如果你想为每个页面请求执行这段代码,你可能会考虑一个过滤器而不是将它嵌入到布局页面中:https://www.learnrazorpages.com/razor-pages/filters