Пользовательский календарь Jquery в asp.net Частичное представление MVC 3

#jquery #asp.net-mvc #asp.net-mvc-3 #jquery-ui

#jquery #asp.net-mvc #asp.net-mvc-3 #jquery-пользовательский интерфейс

Вопрос:

Я создал частичное представление в моем asp.net Приложение MVC 3 и хотите создать пользовательский календарь Jquery. Я добавил этот javascript:

 <script type="text/javascript">
    $(document).ready(function () {
        $("#DateOpened").datepicker(
            {
                dateFormat: 'dd/mm/yy',
                changeMonth: true,
                changeYear: true,
                yearRange: startYearRange   ':'   endYearRange
            });
    });
</script>
  

и HTML выглядит следующим образом:

 @using (Ajax.BeginForm("UpdateAccountDetails", null))
{
 <div class="editor-label">
                    @Html.LabelFor(model => model.DateOpened)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.DateOpened)
                    @Html.ValidationMessageFor(model => model.DateOpened)
                </div>

}
  

Но он не показывает календарь. пожалуйста, есть предложения?

Комментарии:

1. Это не HTML, покажите нам фактический HTML, который генерируется этими помощниками.

2. в реальном html идентификатор DateOpened

3. есть ли на вашей странице какой-либо другой javascript, который работает, возможно, ошибка нарушает ваш код выбора даты? убедитесь, что ваши ссылки на jquery верны.

Ответ №1:

Загружаете ли вы форму динамически (с помощью какого-либо поведения ajax)? Находится ли ваш тег script внутри частичного представления, которое отображает форму?

Если вы загружаете представление динамически, то режим выбора даты не будет привязан, потому что он объявлен до добавления фактического поля в DOM.

Также правильно ли ваш скрипт прикреплен к странице (виден из источника просмотра)? Вы можете попробовать выполнить тот же код скрипта из какой-нибудь консоли JS внутри браузера, чтобы посмотреть, работает ли он. Если он там работает, значит, у вас проблемы с загрузкой представления, то есть скрипт загружается до того, как фактическое поле окажется в DOM.

Комментарии:

1. спасибо, мне было интересно, почему datepicker не работал в моем динамически добавляемом всплывающем окне. Вместо этого я использовал маскированный ввод.

Ответ №2:

Включили ли вы ссылку на скрипт плагина datepicker либо в содержимое вашего частичного представления, либо на главную страницу, на которой он содержится?

Комментарии:

1. да, я добавил пользовательский интерфейс Jquery в частичном представлении следующим образом: <script src=»@Url.Content («~/Scripts/jquery-ui.min.js «)» тип=»текст / javascript»></script>

Ответ №3:

Трудно понять проблему, поскольку вы фактически не показываете HTML-код, который создается вашими помощниками.

Но я совершенно уверен, что проблема здесь в том, что ваш селектор не соответствует ни одному элементу ввода:

  $("#DateOpened").datepicker(...)
  

Вы уверены, что там есть поле с идентификатором DateOpened ? Или это свойство «name», которое вызывается так?? Попробуйте

  $("*[name=DateOpened]").datepicker(...)
  

Комментарии:

1. Вот отрисованный HTML-код: <класс ввода= «допустимое однострочное текстовое поле» data-val=»true» data-val-required=»Дата открытия: поле обязательно». id=»DateOpened» name=»DateOpened» type=»text» value=»1/1/0001 12:00:00 AM»>

Ответ №4:

Вместо использования .EditorFor

 @Html.EditorFor(model => model.DateOpened)
  

Попробуйте

 @Html.TextBoxFor(model => model.DateOpened, new { id = @DateOpened })