我的视图模型:
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; }
}
(没有任何东西来自数据库。)
我的控制器:
return View(new FileTransferFilterCriteriaViewModel())
以下是FromDate
和ToDate
显示的内容:
1/1/0001 12:00:00 AM
我的HTML:
@Html.TextBoxFor(x =>x.Criteria.FromDate)
问题:
null
,如何取消显示默认日期值?null
,如何将日期格式设为MM/dd/yyyy
?答案 0 :(得分:11)
在ViewModel中使用可为空的日期:
public DateTime? FromDate { get; set; }
答案 1 :(得分:2)
我创建了一个编辑器模板,这对我有用。
视图模型的更改:
[UIHint(UiHintConstants.DateCalendar)]
public DateTime? FromDate { get; set; }
[UIHint(UiHintConstants.DateCalendar)]
public DateTime? ToDate { get; set; }
之后,在Views / Shared / EditorTemplate文件夹中创建了一个名为DateCalendar.chtml的编辑器模板:
@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="" />
希望这有助于其他人。
我无法找出一个部分,将尺寸和最大值移出模板。在这种情况下,它不相关,但可能会在某些其他情况下变得像我可以锁定文本框或不想要jquery日历。一旦我掌握了这个,我就会发布。
答案 2 :(得分:0)
一切都很完美。但是,您不是从数据库中获取任何数据(通过传入新实例化的视图模型return View(new FileTransferFilterCriteriaViewModel())
来证明)。您应该考虑在控制器的操作方法中执行此操作。要获得更短的日期格式,请使用@Html.TextBoxFor(x =>x.Criteria.FromDate.ToShortDateString())