我有一个字段用于输入员工的雇用日期,该日期使用jQuery datepicker,这非常有效。但是,当您编辑此员工的信息时,雇用日期字段显示mm / dd / yyyy,但查看html会显示数据库中正确的雇用日期值。我使用编辑器模板实现了我的日期选择器。
生成的HTML:
<input class="text-box single-line" data-val="true" data-val-date="The field Hire Date must be a date." data-val-required="The Hire Date field is required." id="HireDate" name="HireDate" type="date" value="02/12/89">
编辑模板:
@Html.TextBox("", Model.ToString("mm/dd/yyyy"), new { @class = "datepicker"})
查看:
<div class="form-group">
@Html.LabelFor(model => model.HireDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.HireDate, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.HireDate, "", new { @class = "text-danger" })
</div>
</div>
JS:
$(document).ready(function () {
$(".datepicker").datepicker();
});
我在JS中尝试过多种dateformat变体,但似乎没有任何效果。如何显示现有日期?
答案 0 :(得分:1)
如果标记显示该值,则还有其他内容需要理解。
呈现的HTML
<input class="text-box single-line"
data-val="true"
data-val-date="The field Hire Date must be a date."
data-val-required="The Hire Date field is required."
id="HireDate" name="HireDate"
type="date"
value="02/12/89"
/>
这里我们可以注意到,为元素生成的html没有我们在视图级别指定的css class = datepicker
(高优先级,为css类提供的编辑器将获得覆盖视图级别类,他们不能合并在一起)。
value="02/12/89"
表示您已在模型属性[DisplayFormat(DataFormatString="MM/dd/yy")]
<{1}}上装饰HideDate
现在,它告诉控件没有从其EditorTemplates视图渲染,它是基于数据类型进行渲染,默认为html5 input
元素type=date
和placeholder
为{{1} }
这里我们需要确保EditorTemplates文件夹名称和视图名称的命名约定。
编辑器 - 模板视图路径看起来像
mm/dd/yyyy
您的编辑器模板路径必须是以下两种情况之一
在您的情况下,data-type = ..\Views\[Shared|ControllerName]\EditorTemplates\[DataType|CustomName].cshtml
因此默认视图路径看起来像DateTime
如果您的控制器名称为..\Views\Shared\EditorTemplates\DateTime.cshtml
,则控制器特定的模板路径为Employee
您的案例
如果您正在使用评论中提到的..\Views\Employee\EditorTemplates\DateTime.cshtml
等自定义名称
路径应为Date.cshtml
..\Views\Shared\EditorTemplates\Date.cshtml
来自@model DateTime
@Html.TextBox("", Model.ToString("MM/dd/yyyy"), new { @class = "form-control datepicker" })
,您应该传递视图名称,如下所示
EditorFor
答案 1 :(得分:0)
您必须使用格式参数
的重载HtmlHelper.TextBox(string name, objeect value, string format, object htmlAttributes)
examaple:
@Html.TextBox("", Model,"{0:dd/MM/yyyy}", new { @class = "datepicker"})