Когда вы используете EditorFor
, вы, вероятно, не применяете класс dp
к соответствующему полю ввода, и поэтому селектор $('.dp')
, который вы используете для deatepicker, ничего не возвращает.
Одна возможностьприменить класс к родительскому div:
<div class="float-left dp">
<%= Html.Label("BAASent Date") %>
<br />
<%= Html.EditorFor(model => model.BAASentDate) %>
<%= Html.ValidationMessageFor(model => model.BAASentDate) %>
</div>
, а затем настроить селектор так, чтобы вы извлекали поле ввода, которое находится внутри div, с заданным именем класса:
$(document).ready(function () {
$('.dp :input').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd'
});
});
Другая возможностьэто написать собственный шаблон редактора для поля DateTime, в котором вы будете применять класс dp
к TextBox.Итак, внутри ~/Views/Shared/EditorTemplates/DateTime.ascx
:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line dp" }
) %>
, а затем:
<div class="float-left">
<%= Html.Label("BAASent Date") %>
<br />
<%= Html.EditorFor(model => model.BAASentDate) %>
<%= Html.ValidationMessageFor(model => model.BAASentDate) %>
</div>
и, наконец,
$(document).ready(function () {
$('.dp').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd'
});
});