比方说,我有一个Currency
Cookie,它应该是USD
或GBP
。如果有人手动将其更改为例如RUB
,则它将恢复为USD
。在构造函数中重定向
要做到这一点,我创建BaseController
类继承System.Web.MVC.Controller
,然后在我的项目中的每个控制器将继承BaseController
,里面BaseController
构造我叫CheckcookieValidity()
方法。下面的代码:
public class BaseController : Controller
{
public BaseController()
{
If (CheckCookieValidity() == false)
{
SetDefaultCookie();
}
}
}
public void SetDefaultCookies()
{
var curr = new HttpCookie("curr");
curr.Value = "USD";
curr.Expires = DateTime.UtcNow.AddDays(2);
HttpContext.Current.Response.Cookies.Set(curr);
}
我有一些问题,这一点,如果SetDefaultCookie()
被调用,cookie不改变,直到下一个页面,让
- 是否有可能重定向/刷新页面里面的构造函数?
- 这是检查cookie有效性的可接受方法吗?我知道这个问题可以归类为自以为是,但我需要知道是否有更好的方法来实现这一点。
任何帮助将不胜感激,并为坏英语道歉。
答:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (CheckCookiesValidity() == false) {
SetDefaultCookies();
RouteValueDictionary route = new RouteValueDictionary(new {
Controller = "Home",
Action = "Index"
});
filterContext.Result = new RedirectToRouteResult(route);
return;
}
}
在我看来,大多数时间在构造函数中进行密集逻辑是一个坏主意。 – Matthew