jQuery datetimepicker слишком много ошибок рекурсии

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

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

Вопрос:

Я работаю над ASP.NET Приложение MVC 3 и возникли некоторые проблемы. У меня есть PartialView, в котором есть кнопка отправки. Код выглядит примерно так:

 @using (Html.BeginForm("Edit", "IceCream", FormMethod.Post, new { id = "editicecreamform"   @Model.IceCreamID }))
{
   @Html.EditorFor(model => model.Name)
   @Html.ValidationMessageFor(model => model.Name)
   @Html.TextBoxFor(model => model.FirstDateTime, new { @class = "mydatetime" })
   @Html.ValidationMessageFor(model => model.FirstDateTime)
   @Html.TextBoxFor(model => model.SecondDateTime, new { @class = "mydatetime" })
   @Html.ValidationMessageFor(model => model.FirstDateTime)
   <input type="submit" value="Save" data-icecream="@Model" />
}
  

и часть сценария выглядит так:

 <script type="text/javascript">
   $('.mydatetime').datetimepicker({
      showSecond: true,
      timeFormat: 'hh:mm:ss TT', 
      hourGrid: 4,
      minuteGrid: 10
   });

   $(document).ready(function () {
      var options = {
         target: "#icecreamdetails@(Model.IceCreamID)",
         url: '@Url.Action("Edit", "IceCream")',
         success: UpdateGrid // not germane to discussion
      };

      $("#editicecreamform@(Model.IceCreamID)").submit(function () {
         $(this).ajaxSubmit(options);
         return false;
      });
   });
</script>
  

Мое действие редактирования выглядит примерно так:

 [HttpPost]
public PartialViewResult Edit(IceCreamCreateEditViewModel viewModel)
{
   if (ModelState.IsValid)
   {
   }
   return PartialView();
}
  

Ошибка возникает, когда я редактирую запись и делаю поле имени пустым и пытаюсь сохранить его. [Required] В viewmodel есть аннотация к свойству, и поэтому я получаю сообщение об ошибке проверки. Однако, если я затем попытаюсь щелкнуть по одному из двух моих изменений даты и времени, я получаю сообщение «слишком много рекурсии» или ошибку stackoverflow. Это происходит как в FF, так и в IE8. Ошибка находится в jquery-ui-datetimepicker-addon.js файле, который я использую, который я получил из http://trentrichardson.com/2010/04/19/timepicker-addon-for-jquery-ui-datepicker , по крайней мере, именно к этому меня приводит инструмент отладки.

Если я просто использую jquery datepicker (без компонента времени), я вообще не получаю эту ошибку.

Я предполагаю, что в datetimepicker может быть ошибка, но поскольку я новичок в jquery и ASP.NET MVC, есть большая вероятность, что это просто я что-то делаю неправильно.

Есть идеи?

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

1. timeFormat: 'hh:mm;ss TT' быстрый вопрос, ; он должен быть там?

2. @ric_bfa ввел его с ошибкой — должно быть двоеточие, исправлено. Спасибо

Ответ №1:

Итак, похоже, что проблема в том, что в моем частичном представлении есть эта строка:

 <script src="@Url.Content("~/scripts/jquery-ui-datetimepicker-addon.js")" type="text/javascript"></script
  

и если я переместил это в _Layout.cshtml вместо этого, на него не ссылаются дважды и проблема «слишком много рекурсии» / stackoverflow.