Asp.net mvc 4 Cookie值已更新,但返回旧值

Asp.net mvc 4 Cookie值已更新,但返回旧值,asp.net-mvc-4,cookies,Asp.net Mvc 4,Cookies,我有一项任务是制作自定义面包屑,它将保存用户在应用程序中到达当前点的历史信息。为此,我创建了一个类,该类继承自ActionFilterAttribute类,并使用该类装饰控制器的操作,然后在OnActionExecuting override中,我将历史视图保存在cookie中,并在customBreadCrumb部分视图中从cookie中获取信息。 此外,我的customBreadCrumb部分视图位于另一个部分视图的内部,而该部分视图又位于布局页面中。 问题是每次代码执行时都返回旧的cook

我有一项任务是制作自定义面包屑,它将保存用户在应用程序中到达当前点的历史信息。为此,我创建了一个类,该类继承自ActionFilterAttribute类,并使用该类装饰控制器的操作,然后在OnActionExecuting override中,我将历史视图保存在cookie中,并在customBreadCrumb部分视图中从cookie中获取信息。 此外,我的customBreadCrumb部分视图位于另一个部分视图的内部,而该部分视图又位于布局页面中。 问题是每次代码执行时都返回旧的cookie值。更具体地说,它返回当前视图中的上一个值。 这是我的示例代码

public class CustomBreadCrumb : ActionFilterAttribute
{

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        WriteCookie(string cValue);
        base.OnActionExecuting(filterContext);
    }


    private void WriteCookie(string CookieValue)
    {
        HttpCookie breadCrumbCookie = new HttpCookie("MyCookie");
        breadCrumbCookie.Value = CookieValue;
        breadCrumbCookie.Expires = DateTime.Now.AddYears(1);
        HttpContext.Current.Response.Cookies.Add(breadCrumbCookie);
    }

    public static string GetBreadCrumb()
    {

        if (HttpContext.Current.Request.Cookies["MyCookie"] != null)
        {
            return HttpContext.Current.Request.Cookies["MyCookie"].Value;
        }

        return string.Empty;
    }

}
这是我的看法

@{
    @CustomBreadCrumb.GetBreadCrumbs()
 }
这是我的示例控制器

public class HomeController : BaseController
{
    [CustomBreadCrumb]
    public ActionResult Index(int ID = 1)
    {
        //My logic
    }
 }

是否需要从视图中调用属性方法?相反,如果您在Homecontroller中调用具有CustomBreadCrumb属性的方法,那么它应该可以工作(就像您的索引一样)。@LMK谢谢兄弟,但我已经解决了使用缓存而不是cookie的问题,因为您必须提出新的请求以获取更新的值。是否需要从视图中调用属性方法?相反,如果您在Homecontroller中调用具有CustomBreadCrumb属性的方法,那么它应该可以工作(就像您的索引一样)。@LMK谢谢bro,但我已经解决了使用缓存而不是cookie的问题,因为您必须提出新请求以获取更新的值。