我有一个任务来制作Custom BreadCrumbs,它将保留用户到达应用程序当前点的位置的历史信息。我为此目的创建了一个类,它继承自ActionFilterAttribute类并使用该类修饰控制器的操作,然后在我的OnActionExecuting覆盖中,我将历史视图保存在cookie中,并从我的customBreadCrumb局部视图中的cookie中获取信息。 此外,我的customBreadCrumb局部视图位于另一个partail视图中,而另一个partail视图又位于Layout页面中。 问题是每次代码执行时都会返回旧的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
}
}