datetimepicker в MVC3.0 - PullRequest
       9

datetimepicker в MVC3.0

0 голосов
/ 13 марта 2012

Мой сборщик Datetime работает нормально для "Html.TextBoxFor", но когда у меня есть "Html.EditorFor", он не показывает anydatepicker.

У меня есть Jquery следующим образом:

  $(document).ready(function () {
               $('.dp').datepicker({
                   changeMonth: true,
                   changeYear: true,
                   dateFormat: 'yy-mm-dd'
               });
           }); 

Я хочу использовать эту функцию на моей странице .aspx.

 <div class="float-left">
 <%: Html.Label("BAASent Date") %>
 <br />
 <%:Html.TextBoxFor(model => model.BAASentDate, new { @class = "dp" }) %>
 <%: Html.ValidationMessageFor(model => model.BAASentDate) %>
 </div> 

для приведенного выше кода все работает отлично. но когда я заменяю «Html.TextBoxFor» на «Html.EditorFor», он не отображает никакой выбор даты и времени.

что здесь не так?

1 Ответ

0 голосов
/ 13 марта 2012

Когда вы используете 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'
    });
});
...