Я пытаюсь реализовать очень простую функцию для моей домашней работы.Особенность в том, что то, что вы можете назвать системной блокировкой, таким образом, это состояние блокировки (заблокировано или разблокировано и т. Д.) Хранится в базе данных сервера SQL.Так, например, если система заблокирована, я бы поместил желаемое сообщение в предупреждение при начальной загрузке и отобразил бы его в общем макете с помощью сеанса.Вот мое действие Filter Code
public class DisplayLockAlert : ActionFilterAttribute
{
MasterLockMgr lockMgr = new MasterLockMgr(new MvcFertilizerEntities(), Membership.GetUser());
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
switch (lockMgr.GetMasterLockStatus())
{
case Status.Locked:
filterContext.HttpContext.Session.Add(AlertMessages.Key_Locked, AlertMessages.System_Locked);
break;
default:
filterContext.HttpContext.Session.Remove(AlertMessages.Key_Locked);
break;
}
base.OnResultExecuting(filterContext);
}
}
Вот код для получения статуса блокировки
public string GetMasterLockStatus()
{
return db.Master_Lock.OrderBy(l => l.ID).FirstOrDefault().Lock_Status;
}
Однако, по какой-то причине что-то странное произошло, случай переключения всегда возвращает один и тот же результатнесмотря на то, что я изменил статус блокировки в базе данных.Я попытался изменить его с OnActionExecuting на OnResultExecuting и даже попытаться использовать if / else вместо этого, но ничего не решает его
И это будет правильно только тогда, когда я остановлю отладку и перезапущу отладку снова.
Любая идея о лучшем подходе или решении проблем приветствуется.