我正在开发一个分为年度会议的系统。用户可以去更改会话以查看过去的会话
我将如何将用户当前传递yearId
给每个控制器?
我在想我可以在身份验证时设置用户cookie,或者当他们手动更改会话并使用全局过滤器检查cookie时
public class MyTestAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpCookie cookie = filterContext.HttpContext.Request.Cookies["myCookie"];
//do something with cookie.Value
if (cookie!=null)
{
filterContext.ActionParameters["YearId"] = cookie.Value;
}
else
{
// do something here
}
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
}
以下是我如何使用上述过滤器:(或将其添加为全局过滤器)
[MyTestAttribute]
public ActionResult Index(int yearId)
{
//Pass the yearId down the layers
// _repo.GetData(yearId);
return View();
}
使用这种方法,我必须将 yearId 添加到每个控制器。任何反馈表示赞赏。