Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用??操作人员_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 使用??操作人员

C# 使用??操作人员,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我正在尝试使用??操作人员我知道我可以使用==相等运算符测试dbnull。但是我想用??操作人员以下是迄今为止我所拥有但尚未投入使用的内容: @Html.Label(Model.CustomerDate.ToString() ?? "", new { id = "CustomerDate" }) 但它不起作用。Model.CustomerDate是日期时间吗?类型。我已经搜索了,没有找到与上述场景相关的结果。任何帮助都将不胜感激 更新#1 根据Joel的

我正在尝试使用??操作人员我知道我可以使用==相等运算符测试dbnull。但是我想用??操作人员以下是迄今为止我所拥有但尚未投入使用的内容:

@Html.Label(Model.CustomerDate.ToString() ?? "", new { id = "CustomerDate" })

但它不起作用。Model.CustomerDate是日期时间吗?类型。我已经搜索了,没有找到与上述场景相关的结果。任何帮助都将不胜感激

更新#1

根据Joel的建议,我尝试了以下方法:

@Label(Model.CustomerDate.ToString(),新的{id=“CustomerDate”})

这不起作用,因为该字段是DateTime?。我收到错误“对象引用未设置为对象的实例”。我必须处理null、dbnull和有效的datetime值

更新#2

由于Joel在下面的回答,我能够找到一个有效的解决方案:

注意:在??下面的部分,如果不是,则在null时将不呈现控件:

@Html.Label(Model.CustomerDate?.ToString() ?? " ", new { id = "CustomerDate" })

DBNull
与C#
null
不同,并且不适用于空合并
操作符。您已经与
DBNull.Value
进行了比较

除此之外,
DBNull.ToString()
将已经生成一个空字符串,这样您就可以简单地删除空合并操作,如下所示:

@Html.Label(Model.CustomerDate.ToString(), new { id = "CustomerDate" })
如果为空,则会得到所需的空字符串;如果不为空,则会使用进程当前区域性的格式(通常为服务器默认值,但在ASP.Net上下文中,有时可以设置从浏览器推断的内容)从DateTime值创建字符串

如果还需要处理可为null的类型,可以执行以下操作:

@Html.Label(Model.CustomerDate?.ToString() ?? "", new {id = "CustomerDate"})

什么类型是
Model.CustomerDate
?“不工作”是什么意思?你真的是指
DbNull
?或者您是否有可空的
DateTime
属性?Model.CustomerDate是DateTime?乔,谢谢你的帮助!在您编写的上述示例中,我收到错误“对象引用未设置为对象的实例”。我必须处理null、dbnull和有效的日期时间值。@RobertSmith If
Model。CustomerDate
是一个
datetime
值,它是一种值类型,不应为null。如果是
对象
,您可能需要重新思考如何创建模型。Joel,不,这不是DateTime,而是DateTime?@RobertSmith那么我认为您需要
model.CustomerDate?.ToString()??“”
另一方面,我们必须处理DBNull,因为ADO.Net早于可空类型的日期。我真的很想看到一个ADO.NETV2,它完全取代了DBNull,它将成为nullables(或者类似于使用新的nullable引用类型),以及一些其他小的API修复程序。