jQuery datepicker不显示数据库中的值

时间:2014-10-30 22:26:52

标签: javascript jquery asp.net-mvc jquery-ui-datepicker

我有一个字段用于输入员工的雇用日期,该日期使用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变体,但似乎没有任何效果。如何显示现有日期?

2 个答案:

答案 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=dateplaceholder为{{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"})