在任何操作上,我都会在重写的onActionExecuting方法上添加代码,该方法检查用户是否更新了所有帐户信息(如果没有),然后重定向到用户无法跳过的操作/页面,除非他们更新其信息。
在该页面中,我们通过Ajax调用获取信息,但是由于onActionExecuting正在进行检查,因此通过ajax进行的所有api调用都将重定向到页面/操作,因此用户需要用来更新信息的表单将不起作用因此。
如何解决此问题?
```
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
Employee user = GetCurrentUser();
ViewBag.User = user;
bool shouldUpdateUserInfo = false;
if (user != null)
{
shouldUpdateUserInfo = user.UpdatedTime == null || NotifyUserInfoUpdateSince > user.UpdatedTime;
if (shouldUpdateUserInfo)
{
var rvd = new RouteValueDictionary
{
{ "action", "UpdateUserInfo" },
{ "controller", "Account" },
{ "returnUrl", Request.Url.AbsolutePath }
};
filterContext.Result = new RedirectToRouteResult(rvd);
}
}
base.OnActionExecuting(filterContext);
}
```