最近想将MVC中Model中的DateTime能够显示出来,但是默认的EditFor中type为datetime,google chrome不支持该时间格式,于是想自定义将其改成type="date"格式,并且更改DateTime的value的格式为"yyyy-MM-dd",这样在浏览器中才能显示出来,默认的格式为"yyyy/MM/dd",浏览器不支持该格式。同时也不想利用datetimepicker实现,就想到了利用EditForTemplate实现。具体步骤如下:
在View->Shared中新建一个文件夹EditorTemplates。定义一个"_DateTime.cshtml"
输入:
@model DateTime
@{
var name = ViewData.TemplateInfo.HtmlFieldPrefix;
var classString = "text-box single-line form-control" ;
var valueFormate = Model.ToString("yyyy-MM-dd");
}
Model中的定义:
public class Device{
[UIHint("_DateTime")]
[Display(Name = "上次计量时间")]
public virtual DateTime? PreviousMeasureTime { get; set; }
}
不足之处:无法解析@Html.EditFor()中的htmlAttributes。
学习点:发现如何要获得Model中PreviousMeasureTime的名称,需要用
var name = ViewData.TemplateInfo.HtmlFieldPrefix;