Mat*_*son 0 vb.net asp.net-mvc nullable invalidoperationexception razor
我正在使用Razor在VS2013中使用VB.NET MVC 5.1
siq.Price是一个十进制?
我正在尝试检查siq.Price是否有值,如果是,则将其打印为货币.我在尝试访问.Value属性时收到此错误,其中true为.HasValue返回true的元素:
可以为空的对象必须具有值.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.InvalidOperationException:Nullable对象必须具有值.
我尝试了这两行代码,认为它们应该没有问题,但收到了上面的错误:
@IIf(siq.Price.HasValue, siq.Price.Value, "N/A")
'and
@IIf(siq.Price.HasValue, siq.Price.Value.ToString("C"), "N/A")
Run Code Online (Sandbox Code Playgroud)
一旦我从TruePart中删除了.Value,它就开始工作了:
@IIf(siq.Price.HasValue, siq.Price, "N/A")
'and
@IIf(siq.Price.HasValue, String.Format("{0:C}", siq.Price), "N/A")
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?!我很困惑.
注意:如果Price有值,这段代码就可以自己运行,但是在IIf()中没有:
@siq.Price.Value.ToString("C")
Run Code Online (Sandbox Code Playgroud)
IIF()VB.Net中的函数始终评估true和false部分.相反,您应该更改为使用IF()运算符,该运算符仅计算返回值,如下所示:
@If(siq.Price.HasValue, siq.Price.Value.ToString("C"), "N/A")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |