我正在使用带有Razor视图引擎的MVC4。我的控制器如下:
public ActionResult Index()
{
return View(new EmployeeIndexViewModel
{
ToDate = DateTime.Now
});
}
我的视图模型如下:
public class EmployeeIndexViewModel
{
[DataType(DataType.Date)]
public DateTime ToDate { get; set; }
}
在我看来,我有一个简单的EditorFor()
电话:
@Html.EditorFor(model => model.ToDate)
但仍然在我的日期选择器中获得默认(屏蔽)值:
问题:
我怎样才能将今天的日期(从控制器)改为显示在这里?
答案 0 :(得分:19)
我的问题不是我最初想过的jQuery或MVC4问题。它与HTML5兼容浏览器如何显示日期选择器有关。我以不正确的格式将日期传递给视图。
我将ViewModel修改为此,现在日期填充正确:
public class EmployeeIndexViewModel
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ToDate { get; set; }
}
答案 1 :(得分:2)
您应该从jQuery级别执行此操作:
$( ".selector" ).datepicker( "setDate", yourDate);
例如,如果您想设置今天的日期:
$( ".selector" ).datepicker( "setDate", new Date());
您还可以尝试在视图模型类中添加DisplayFormat
属性,以确保日期选择器能够正确解释您的数据格式:
public class EmployeeIndexViewModel
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ToDate { get; set; }
}
答案 2 :(得分:1)
你可以设置输入或输入类型="日期" (datetimepicker)使用JQuery。
在Razor视图中
@ Html.TextBoxFor(m => m.StartedDate,new {@id =" mydate",@ type =" date",@ class ="表格-control"})
这是JS代码
$(document).ready(function () {
var dateNewFormat, onlyDate, today = new Date();
dateNewFormat = today.getFullYear() + '-';
if (today.getMonth().length == 2) {
dateNewFormat += (today.getMonth() + 1);
}
else {
dateNewFormat += '0' + (today.getMonth() + 1);
}
onlyDate = today.getDate();
if (onlyDate.toString().length == 2) {
dateNewFormat += "-" + onlyDate;
}
else {
dateNewFormat += '-0' + onlyDate;
}
$('#mydate').val(dateNewFormat);
});