簡體   English   中英

將 MVC 默認日期 (01/01/0001) 格式化為空

[英]Format MVC default Date (01/01/0001) to be empty

我的 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 ,我想將日期抑制為空白。 我怎樣才能做到這一點??

您可以執行以下操作

  1. 在您的 MVC 項目 => Views => Shared 中,創建新文件夾DisplayTemplates
  2. DisplayTemplates文件夾下創建新視圖並將其Date.cshtml

Date.cshtml的代碼

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

你的模型代碼

[DataType(DataType.Date)]
public DateTime? achPayDate { get; set; }

這種方式將使所有帶有數據注釋的 DateTime [DataType(DataType.Date)]遵循相同的行為,您也可以對EditorTemplates執行相同的操作

您可以在此處獲取有關EditorTemplatesDisplayTemplates更多信息

希望能幫到你

對於普通的 DateTimes,如果你根本不初始化它們,那么它們將匹配 DateTime.MinValue,因為它是一個值類型而不是一個引用類型。

您還可以使用可為空的 DateTime,如下所示:

DateTime? MyNullableDate;

或者更長的形式:

Nullable<DateTime> MyNullableDate;

或使用:

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

我將 1900-01-01 作為“空”日期並以這種方式抑制它:Date.cshtml(在 DisplayTemplates 中):

@model DateTime?
@if (Model != null && Model == DateTime.Parse("1900-01-01 00:00:00"))
{
    Html.Raw("&nbsp;");
}
@if (Model != null && Model != DateTime.Parse("1900-01-01 00:00:00"))
{
    @string.Format("{0:yyyy-MM-dd hh:mm:ss}",Model)
}

我在視圖中使用它的模板名稱“日期”:

@Html.DisplayFor(modelItem => item.m.CarrierArrival,"Date")

我在網絡網格列中添加如下

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM