比方說,我有一個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