在MVC中格式化可为空的DateTime字段

时间:2014-06-30 11:47:46

标签: c# asp.net-mvc model-view-controller

我正在尝试更改表格中可空datetime字段的格式,以便以ddd dd mmm yyyy格式显示。我尝试过使用DateTime.ToString("ddd dd mmm yyyy)DateTime.Value.ToString("ddd dd mmm yyyy"),但都没有效果。

<td>
  @Html.DisplayFor(modelItem => item.DailyReportDate)
</td>

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:8)

这里的问题是DateTime?没有接受格式化字​​符串的ToString()方法。要解决此问题,您可以使用以下代码:

@string.Format("{0:ddd dd mmm yyyy}", item.DailyReportDate)

如果DailyReportDatenull,则此代码将呈现为空字符串。否则,您将获得格式化的日期时间。 Nullable.ToString Method documentation

中描述了此行为

希望有所帮助。


不是完全你想要什么,但这可以帮助你。

如果你有一个简单的DateTime(不可空),那么here就是如何完成你想要的东西的一个很好的例子。总而言之,您需要做的就是在您的财产上设置DisplayFormatAttribute属性

public class Model {
    [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
    public DateTime? DailyReportDate { get; set;}
}

然后你可以像指出的那样使用它:

@Html.DisplayFor(item=> item.DailyReportDate)

您可以找到DisplayFormatAttribute here

的文档

答案 1 :(得分:0)

.ToString()总是提出&#34;对象引用未设置为对象的实例&#34;因为此方法需要非null对象。你必须使用像这样的if else

@if (modelItem => item.DailyReportDate != null)
{
    //add format
}
else
 {
   @Html.DisplayFor(modelItem => item.DailyReportDate)item.Amount)
 }
}