String.Format转换日期格式,当日期为空值出错

abcn 2012-09-07 04:30:52
用asp.net mvc3 做日期的模板,在share目录下建立DisplayTemplates文件夹,并生成一个DateTime.cshtml,里面的代码是
@String.Format("{0:d}",Model.Date),当Model.Date值不为空时,日期型的数据能正常显示,当Model.Date值传入空值时就提示出错“无法对 null 引用执行运行时绑定”,请问如何处理Model.Date的空值,谢谢!
...全文
932 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcn 2012-09-12
  • 打赏
  • 举报
回复
最关键的就是第一条语句
@model Nullable<DateTime>
abcn 2012-09-12
  • 打赏
  • 举报
回复
自己在网上找到解决方法了,谢谢大家!
解决方案

edittemplate:
@model Nullable<DateTime>
@{
DateTime dt =(DateTime) ((Model == null )? Convert.ToDateTime("1900-1-1") : Model);
@Html.TextBox("", String.Format("{0:d}", dt.Year<1920?"":dt.ToShortDateString()), new { @class = "datefield", @type = "date" })
}
display:
@model Nullable<DateTime>
@(Model != null ? string.Format("{0:d}", Model) : string.Empty)
WJY_123456 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你像我一样写“空”是不行的引用 1 楼 的回复:
@String.Format("{0:d}",Model.Date == null?"空":Model.Date);
[/Quote]
+1
abcn 2012-09-11
  • 打赏
  • 举报
回复
我是创建分布视图,在这个视图里加任何判断条件都无效,哪怕是 if(5>9){@String.Format("{0:d}",Model.Date)},一样会提示这个错误,我整页就这条语句,到底是怎么回事?
abcn 2012-09-11
  • 打赏
  • 举报
回复
我是创建分布视图,在这个视图里加任何判断条件都无效,哪怕是 if(5>9){@String.Format("{0:d}",Model.Date)},一样会提示这个错误,我整页就这条语句,到底是怎么回事?
yyl8781697 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 3 楼 的回复:

@Model.Date == null?"空":String.Format("{0:d}",Model.Date);
这样行

应该是这样的,逻辑判断在外面,Format方法要的参数是日期类型的,当值为空时但让报错了。
[/Quote]
++++
先判断是否存在/为空,再进行相应的操作/类型转换
abcn 2012-09-11
  • 打赏
  • 举报
回复
这里怎么贴图呢,按照各位说的做了,出现的错误提示都是一样的。
_老吴 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

@Model.Date == null?"空":String.Format("{0:d}",Model.Date);
这样行
[/Quote]
应该是这样的,逻辑判断在外面,Format方法要的参数是日期类型的,当值为空时但让报错了。
H_Gragon 2012-09-10
  • 打赏
  • 举报
回复
如果为空不让他转换不就行了吗
abcn 2012-09-10
  • 打赏
  • 举报
回复
各位,我是创建分布视图,在这个视图里加任何判断条件都无效,哪怕是我定 if(5>9){@String.Format("{0:d}",Model.Date)},里面的语句一样会执行,是肿么回事呢,谢谢大家!
bradleydan 2012-09-08
  • 打赏
  • 举报
回复
应该先判断在显示。
当日期为空时,直接 string.Empty,日期不为空时再显示!
聖傑 2012-09-08
  • 打赏
  • 举报
回复
这是我以前给数据库插入DateTime类型为空时的处理办法。你参考一下。
DateTime birthday;
if(birthday=="")

sqlparas[6]=new sqlparas("@birthday",DBNull.value);

else

sqlparas[6]=new sqlparas("@birthday",birthday);
abcn 2012-09-07
  • 打赏
  • 举报
回复
楼上二位,好象加判断语句没用,按二位的两种方法都还是提示出错。
victo7 2012-09-07
  • 打赏
  • 举报
回复
@String.Format("{0:d}",Model.Date == null?"空":Model.Date);

因为有这个格式{0:d}存在,所以,Date必须要有值。 要处理没有值的情况,那么就不应该在String.Format("{0:d}",Model.Date)这里面处理

应该是像这样:

if(Model.Date != null....)
@String.Format("{0:d}",Model.Date
else
..........
lw_881020 2012-09-07
  • 打赏
  • 举报
回复
@Model.Date == null?"空":String.Format("{0:d}",Model.Date);
这样行
lw_881020 2012-09-07
  • 打赏
  • 举报
回复
你像我一样写“空”是不行的[Quote=引用 1 楼 的回复:]
@String.Format("{0:d}",Model.Date == null?"空":Model.Date);
[/Quote]
lw_881020 2012-09-07
  • 打赏
  • 举报
回复
@String.Format("{0:d}",Model.Date == null?"空":Model.Date);

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧