脚手架日期和时间选择器

时间:2017-01-09 10:39:55

标签: asp.net asp.net-mvc

当从具有下面属性的模型中构建一个视图时,会生成一个代码,该代码会呈现一个效果很好的浏览器日期选择器。

如何搭建产生日期和时间选择器的房产?

[Display(Name = "Date Start")]
[DataType(DataType.Date)]
public DateTime EventStart { get; set; }

我尝试了这个,但它不起作用......

[DataType(DataType.DateTime)]

1 个答案:

答案 0 :(得分:1)

您可以通过创建自定义EditorTemplate并告诉MVC将其与[UIHint]一起使用来实现此目的。

视图模型:

[Display(Name = "Date Start")]
[UIHint("DateTimePicker")]
public DateTime EventStart { get; set; }

查看/共享/ EditorTemplates / DateTimePicker.cshtml:

@model DateTime

<input type="text" name="@Html.NameFor(m => m)" id="@Html.IdFor(m => m)" value="@Model.ToString("o")"/>
<script type="text/javascript">
    // init the datepicker of your JS UI Framework (I am using jQuery UI here)
    $('#@Html.IdFor(m => m)').datepicker(); 
</script>

主视图中的用法:

@Html.EditorFor(m => m.EventStart)

这种方法的问题是你松开了在EditorTemplate中创建的JS datepicker对象的句柄。因此,如果您想更改配置(例如动态设置maxDate),则必须构建其他基础架构。

所以我的建议是将JS datepicker直接附加到需要它的视图中并在那里配置它,而不是使用编辑器模板进行日期选择。