格式化MVC默认日期(01/01/0001)为空

时间:2016-09-19 21:28:56

标签: c# asp.net-mvc date datetime razor

我的Razor表单代码

<div class="form-group">
    @Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" })
    @Html.DisplayFor(model => model.achPayDate, new {@class="date"})
</div>

我的cs代码

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? achPayDate { get; set; }
当achPayDate = 0001-01-01T00:00:00时,显示

01/01/0001,我想将日期抑制为空白。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

对于普通的DateTimes,如果你根本没有初始化它们,那么它们将匹配DateTime.MinValue,因为它是值类型而不是引用类型。

你也可以使用可以为空的DateTime,如下所示:

DateTime? MyNullableDate;

或更长的形式:

Nullable<DateTime> MyNullableDate;

或使用:

private DateTime? _achPayDate = null;
public DateTime? achPayDate { get {return _achPayDate ; } set{_achPayDate = value;} }

答案 1 :(得分:2)

您可以执行以下操作

  1. 在您的MVC项目中=&gt; Views =&gt;共享,创建新文件夹Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); wv = new QWebView; wv->setParent(this); wv->load(QUrl("https://www.tumblr.com")); }
  2. DisplayTemplates文件夹下创建新视图,并将其命名为DisplayTemplates
  3. Date.cshtml

    的代码
    Date.cshtml

    模型

    的代码
    @model DateTime?
    @if(Model!=null && Model!=DateTime.MinValue)
    {
       @string.Format("{0:MM/dd/yyyy}",Model)
    }
    

    这种方式会使所有带有数据注释{Date}的DateTime遵循相同的行为,同样也可以对[DataType(DataType.Date)] public DateTime? achPayDate { get; set; }

    执行相同操作

    您可以获得有关[DataType(DataType.Date)]EditorTemplates here

    的更多信息

    希望这会对你有所帮助

答案 2 :(得分:-1)

我在网络网格列中添加了如下内容

grid.Column("Note Date",
style: "width:159px",
format: @<text>
@if (item.NoteDate == DateTime.MinValue)
{
                    
}
else
{
  @string.Format("{0:MM/dd/yyyy}", item.NoteDate)
}
</text>)