#c#
Вопрос:
У меня есть основной проект Entity Framework с этим HttpPut
методом внутри моих контроллеров.
У меня есть оператор if/else, который проверяет два логических isValid
значения и isDeleted
.
При тестировании, когда я отправляю объект контроллеру со isValid
значением true и isDeleted
значением false, он отправляет правильное электронное письмо.
Но если я отправлю объект со isValid
значением true и isDeleted
значением true, он не отправит электронное письмо.
Является ли моя логика кода неуправляемой сумасшедшей?
Спасибо!
[HttpPut("{id}")] public async Tasklt;IActionResultgt; PutShoppingCart(long id, [FromBody] ShoppingCart shoppingCart) { _context.Entry(shoppingCart).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ShoppingCartExists(id)) { return NotFound(); } else { throw; } } if (shoppingCart.IsValid amp;amp; !shoppingCart.IsDeleted) { try { _customerEmailerProcess.SendCustomerEmail(shoppingCart,10); } catch (Exception ex) { await HttpResponseWritingExtensions.WriteAsync(this.Response, "lt;scriptgt;alert('" HttpUtility.HtmlEncode(ex) "')lt;/scriptgt;"); } } else { if (shoppingCart.IsDeleted) { try { _customerEmailerProcess.SendCustomerEmail(shoppingCart, 20); } catch (Exception ex) { await HttpResponseWritingExtensions.WriteAsync(this.Response, "lt;scriptgt;alert('" HttpUtility.HtmlEncode(ex) "')lt;/scriptgt;"); } } } return NoContent(); }
Комментарии:
1.
!shoppingCart.IsDeleted
is с оператором not, когда вы устанавливаете оба значения true, он становится ложным, и также есть оператор amp;amp; между обоими условиями, что делает его в целом ложным, вы можете поставить ИЛИA || B
сделать его истинным в любом случае2. !Тележка для покупок. IsDeleted это становится ложным в случае истинного.
3. выберите строку с if (ShoppingCart.isValid amp;amp; ShoppingCart. IsDeleted==ложь). это сработает, если ваш ввод для IsDeleted является ложным для первого письма.
4. Ваша логическая логика выглядит нормально, хотя и немного запутанно. Вы уверены, что не создается исключение?
5. если логика все еще не ясна, попробуйте поместить IsDeleted в дополнительный набор скобок
if((!shoppingCart.IsDeleted) amp;amp; shoppingCart.IsValid)
Ответ №1:
Похоже, что ваше утверждение if/else должно работать, поэтому я предполагаю, что в методе SendCustomerEmail есть проблема, когда второй параметр равен 20. Ожидает ли метод, что объект ShoppingCart будет иметь значение isValid, равное true?
Самое простое, что можно сделать, чтобы решить эту проблему, — это запустить ее через отладчик и пройти через нее с помощью тележки для покупок.Свойству IsDeleted присвоено значение false.