如果始终为真,则可为 Nullable Decimal
Nullable Decimal If Is Always True
我有一个页面列出了工单中的项目。这些项目中的每一个都有许多属性,以及一个可选的 属性 折扣。如果工作订单没有折扣,我们想隐藏该列,如果有,我们必须在有价值的行中显示它。
这些值是从数据库中提取的,折扣是一个可以为 null 的十进制列,它被提取为一个可以为 null 的小数。
在控制器中,我检查是否有任何折扣,并在 ViewBag 中设置了一个名为 NoDiscount 的布尔值。
ViewBag.NoDiscount == false 检查被接受,但是如果它是 true 并且 item.Discount.HasValue检查已经过测试,它总是 returns true.
@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,它 returns 错误,但代码继续。
我得到的错误是:
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.
看一个小时再问,问了5分钟自己解决
我的@放错地方了。
@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>
}
我有一个页面列出了工单中的项目。这些项目中的每一个都有许多属性,以及一个可选的 属性 折扣。如果工作订单没有折扣,我们想隐藏该列,如果有,我们必须在有价值的行中显示它。
这些值是从数据库中提取的,折扣是一个可以为 null 的十进制列,它被提取为一个可以为 null 的小数。
在控制器中,我检查是否有任何折扣,并在 ViewBag 中设置了一个名为 NoDiscount 的布尔值。
ViewBag.NoDiscount == false 检查被接受,但是如果它是 true 并且 item.Discount.HasValue检查已经过测试,它总是 returns true.
@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,它 returns 错误,但代码继续。
我得到的错误是:
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.
看一个小时再问,问了5分钟自己解决
我的@放错地方了。
@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>
}