Ваше состояние, кажется, неправильно.!(parseInt("@Model.Status") === @((int)Status.Active) || !(parseInt("@Model.Status") === @((int)Status.Expired)) && '@Model.EditMode' === 'True')
можно рассматривать как !(a || !(b) && c)
, где
a = parseInt("@Model.Status") === @((int)Status.Active)
b = parseInt("@Model.Status") === @((int)Status.Expired)
c = '@Model.EditMode' === 'True'
Оператор AND (&&
) имеет более высокий приоритет, чем ||
, поэтому может отображаться фактический порядок оценкииспользуя группировку как !(a || (!(b) && c))
так же, как 2 + 3 * 4
оценивается как 2 + (3 * 4)
.
Однако представленная логика не соответствует требованию.Статус должен быть любым, кроме Активного или Истекшего и Режим редактирования должен иметь значение «Истина».Однако, похоже, что скобки не совпадают, вероятно, из-за опечатки, так как логическое выражение whole отрицается, и, кроме того, второе условие также отрицается, тогда как это не должно быть.
Правильное логическое выражение !(a || b) && c
.Подставляя логические тесты:
!(parseInt("@Model.Status") === @((int)Status.Active) || parseInt("@Model.Status") === @((int)Status.Expired) &&
'@Model.EditMode' === 'True'
Я не знаком с Kendo, но если возможно использовать !==
, то выражение можно немного упростить, сняв некоторые скобки.Согласно законам Де Моргана !(a || b)
эквивалентно !a && !b
, поэтому, если мы выполним эту замену, мы получим !a && !b && c
.Если мы также изменим с !(parseInt("@Model.Status") === @((int)Status.Active))
на parseInt("@Model.Status") !== @((int)Status.Active)
, то получим:
parseInt("@Model.Status") !== @((int)Status.Active) &&
parseInt("@Model.Status") !== @((int)Status.Expired) &&
'@Model.EditMode' === 'True'