2015-08-05 5 views
0

У меня есть страница, в которой перечислены элементы в рабочем порядке. Каждый из этих элементов имеет много свойств и необязательное свойство скидки. Если в Рабочем заказе нет скидок, мы хотим скрыть столбец, и если есть, мы должны показать его для строк, которые имеют значение.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. 
+0

Вы используете 'dynamic' где-нибудь (кроме' ViewBag')? Это может испортиться с таким кодом. Можете ли вы показать определение «item» (и его тип - вам не нужно включать все поля и свойства, а что нет, просто «бит класса» и «скидка»). – Luaan

ответ

0

час, глядя на него, прежде чем я прошу, то я решаю сам его 5 минут после того, как спрашивать.

My @'s были не в том месте.

@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> 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^