隐藏的默认值的日期(Hiding the default value for a date)

2019-06-27 04:54发布

我的视图模型:

public partial class FileTransferFilterCriteriaViewModel
{
    public string Fice { get; set; }
    public string SourceEmail { get; set; }
    public string TargetEmail { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
    public string Status { get; set; }
    public string Category { get; set; }
}

(没有从DB来了。)

我的控制器:

return View(new FileTransferFilterCriteriaViewModel())

以下是获取显示两个FromDateToDate

1/1/0001 12:00:00 AM

我的HTML:

@Html.TextBoxFor(x =>x.Criteria.FromDate)

问题:

  1. 如果日期是null的,我怎么能抑制默认的日期值的显示?
  2. 如果日期是不是 null的,我怎么能格式化日期为MM/dd/yyyy

Answer 1:

在您的视图模型使用可空日期:

public DateTime? FromDate { get; set; }


Answer 2:

我已经创建了一个编辑模板,这是为我工作。

更改视图模型:

[UIHint(UiHintConstants.DateCalendar)]
        public DateTime? FromDate { get; set; }

        [UIHint(UiHintConstants.DateCalendar)]
        public DateTime? ToDate { get; set; }

之后,在浏览称为DateCalendar.chtml /共享/ EditorTemplate文件夹中创建一个编辑器模板:

@using System.Globalization
@model DateTime?

@Html.TextBox("", (Model.HasValue && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("1900") && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("0001") ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), new { @class = "datePicker", maxlength = "12", size = "12" })

然后利用它作为:

@Html.EditorFor(x =>x.FromDate)
@Html.EditorFor(x => x.ToDate)

这里是源代码:

<input class="datePicker" id="Criteria_FromDate" maxlength="12" name="Criteria.FromDate" size="12" type="text" value="" />

<input class="datePicker" id="Criteria_ToDate" maxlength="12" name="Criteria.ToDate" size="12" type="text" value="" />

希望这有助于一些其他人。

我无法虽然弄清楚其中的一部分,移动的规模和maxlenth了模板。 在这种情况下,它是不相关的,但有可能成为像我在那里可以锁定文本框或不想jquery的日历其他一些实例。 因为我对这个句柄我会尽快发布。



Answer 3:

一切都可以正常使用。 你是不是从数据库中获取任何数据,但(通过传递一个新实例化视图模型证明return View(new FileTransferFilterCriteriaViewModel()) 您应该考虑做你的控制器的操作方法里面。 为了获得较短的日期格式,使用@Html.TextBoxFor(x =>x.Criteria.FromDate.ToShortDateString())



文章来源: Hiding the default value for a date