C# MVC中的cookie需要2次页面加载才能注册

C# MVC中的cookie需要2次页面加载才能注册,c#,asp.net-mvc,cookies,C#,Asp.net Mvc,Cookies,我正在创建一个MVC应用程序,其中有一个显示隐藏值和隐藏值的按钮。问题是,在页面上注册cookie更改之前,我需要按两次按钮。任何帮助都将是巨大的,特别是如果你告诉我如何准确地纠正这一点 所以这里发生的事情是,我必须按两次Show Not Active,才能将其更改为Hide Not Active,反之亦然 if (Request.Cookies["showHidden"] != null) { ViewBag.Show = Request.Cookies["showHidden"].V

我正在创建一个MVC应用程序,其中有一个显示隐藏值和隐藏值的按钮。问题是,在页面上注册cookie更改之前,我需要按两次按钮。任何帮助都将是巨大的,特别是如果你告诉我如何准确地纠正这一点

所以这里发生的事情是,我必须按两次Show Not Active,才能将其更改为Hide Not Active,反之亦然

if (Request.Cookies["showHidden"] != null)
{
    ViewBag.Show = Request.Cookies["showHidden"].Value;
}
else
{
    ViewBag.Show = "false"
}
@if (User.IsInRole("Data Manager"))
{
    if (ViewBag.Show != "true")
    {
        <text>
            @Html.ActionLink("Show Not Active", "Details", new
              { show = "true" }, new { @class="btn btn-primary btn-sm"                })
       </text>
    }
    else
    {
        <text>   
            @Html.ActionLink("Hide Not Active", "Details", new 
              { show = "false" }, new { @class="btn btn-primary btn-                  sm })
       </text>
    }

无论如何,我知道如何让按钮在每次点击时更改,隐藏/显示在每次点击时更改,但我现在有另一个问题,cookies不会在每次我离开页面时持续,因此我将在另一个线程中发布

public ActionResult Details(int? id, string show)
{
    if (show == "true")
    {
        if (this.Response.Cookies["showHidden"] == null
        {
            HttpCookie cookie = new HttpCookie("showHidden", "true");
            cookie.Expires = new DateTime(DateTime.Now.Year + 1, DateTime.Now.Month, DateTime.Now.Day);
            this.Response.Cookies.Add(cookie);
        }
        else
        {            
            HttpCookie cookie = new HttpCookie("showHidden", "true");
            cookie.Expires = new DateTime(DateTime.Now.Year + 1, DateTime.Now.Month, DateTime.Now.Day);
            this.Response.SetCookie(cookie);        
        }
    }
    if (show == "false")
    {        
        if (this.Response.Cookies["showHidden"] == null
        {
            HttpCookie cookie = new HttpCookie("showHidden", "false");
            cookie.Expires = new DateTime(DateTime.Now.Year + 1, DateTime.Now.Month, DateTime.Now.Day);
            this.Response.Cookies.Add(cookie);
        }
        else
        {            
            HttpCookie cookie = new HttpCookie("showHidden", "false");
            cookie.Expires = new DateTime(DateTime.Now.Year + 1, DateTime.Now.Month, DateTime.Now.Day);
            this.Response.SetCookie(cookie);        
        }

    }
    thing thing = db.thing.Find(id);
    if (thing == null)
    {
        return HttpNotFound();
    }
    return View(thing);
}