DateTime空值验证:如何判断默认值并实现视图内容切换显示
解决DateTime默认值判断问题
你遇到的问题根源在于DateTime是值类型,它永远不会为null,未赋值时会自动被初始化为DateTime.MinValue(也就是你调试时看到的1/1/0001 12:00:00),所以原来通过判断字符串是否为空的逻辑完全不生效。
直接和DateTime.MinValue对比就能准确识别这个默认值状态,下面是修改后的代码:
方法1:修改原有if-else逻辑
grid.Column("edited_on", "Edited On", format: (item) => { if (item.edited_on != DateTime.MinValue) { return Html.Raw(string.Format("{0:dd-MMM-yyyy}", item.edited_on)); } else { return Html.Raw("Unavailable"); } }),
方法2:用三元运算符简化代码
如果想让代码更简洁,可以用三元表达式替代if-else:
grid.Column("edited_on", "Edited On", format: (item) => Html.Raw(item.edited_on != DateTime.MinValue ? string.Format("{0:dd-MMM-yyyy}", item.edited_on) : "Unavailable") ),
额外建议
如果你的数据模型允许修改,建议把edited_on字段改成可空DateTime类型(DateTime?),这样未赋值时字段值就是null,后续判断可以直接用item.edited_on.HasValue,逻辑会更直观:
grid.Column("edited_on", "Edited On", format: (item) => Html.Raw(item.edited_on.HasValue ? string.Format("{0:dd-MMM-yyyy}", item.edited_on.Value) : "Unavailable") ),
内容的提问来源于stack exchange,提问作者gudeThings
相关产品推荐
相关产品推荐

