通常,在 .ascx 内的 foreach 上,我可以使用以下命令访问可为空的 DateTime:
<%=item.DataModifica.Value.ToShortDateString() %>
但如果我尝试使用中继器:
<%#Eval("DataModifica.Value.ToShortDateString()").ToString()%>
我得到一个例外
System.DateTime' 不包含名为 'Value' 的属性
我哪里错了?
@Markzzz 提供了出色的解决方案。我假设您DataModifica
是一个可以为空的字段,这就是您检查它的原因Value
。当有一个null
值时,它不能被.ToString()
方法转换。您必须使用Convert
类的方法或检查您的字段是否有空值并相应地执行。这是一个例子
<%# (Eval("DataModifica") != null ? Eval("DataModifica","{0:dd-MM-yyyy}") : "Not Available") %>
我建议你像这样更改代码:
<%# Convert.ToDateTime(Eval("DataModifica")).ToShortDateString()%>
使用日期时间类型?你可以这样做:
(Eval("DateCreate") != null && Eval("DateCreate") is DateTime) ?DateTime.Parse(Eval("DateCreate").ToString()).ToString("MM/dd/yyyy") : "立即"