У меня есть страница, в которой перечислены элементы в рабочем порядке. Каждый из этих элементов имеет много свойств и необязательное свойство скидки. Если в Рабочем заказе нет скидок, мы хотим скрыть столбец, и если есть, мы должны показать его для строк, которые имеют значение.Nullable Decimal If Always Always
Значения вытаскиваются из базы данных, а скидка - десятичный столбец с нулевым значением, который вытягивается в десятичную точку с нулевым значением.
В контроллере я проверяю, есть ли какие-либо скидки, и задайте логическое имя NoDiscount в ViewBag.
ViewBag.NoDiscount == ложная проверки почитается, но если это правда, и item.Discount.HasValue проверки тестируется, он всегда возвращает истину.
@if (ViewBag.NoDiscount == false) {
<div class="col-xs-2" style="border-top: solid 1px #DDD;">
if (@item.Discount.HasValue) {
@item.Discount.Value.ToString("C", System.Globalization.CultureInfo.CreateSpecificCulture(ViewBag.Currency))
}
</div>
}
Если я нарушу код и тест, если Discount.HasValue на нулевых элементов, он возвращает ложь, но код продолжается.
Ошибки я получаю:
An exception of type 'System.InvalidOperationException' occurred in mscorlib.dll but was not handled in user code
Additional information: Nullable object must have a value.
Вы используете 'dynamic' где-нибудь (кроме' ViewBag')? Это может испортиться с таким кодом. Можете ли вы показать определение «item» (и его тип - вам не нужно включать все поля и свойства, а что нет, просто «бит класса» и «скидка»). – Luaan