Выполнение в диалоговом окне Jquery дважды подряд не выполняется должным образом - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь создать диалоговое окно Jquery, которое в основном представляет собой форму, которая принимает ввод от пользователя.

Вместо того, чтобы делать обычный диалог «сохранить и закрыть», я пытаюсь сделать диалог «сохранить и сделать что угодно, а затем закрыть, когда вам это нравится», что по сути означает, что модель представления передается в контроллер после нажатия сохранить в первый раз, вернется, а затем разрешить дальнейшее сохранение.

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

$(function () {
        $("#EventDialog").dialog({
            autoOpen: false, minWidth: 600, minHeight: 360, modal: true,
            buttons: {
                "Save": function () {
                    $.validator.unobtrusive.parse("#EventManage");

                    if ($("#EventManage").valid()) {
                         $.ajax({
                            url: "/Home/EventSave",
                            type: 'POST',
                            data: $("#EventManage").serialize(),
                            success: function (result) {
                                //alert("s");
                                $("#EventManage").html(result);
                                //$.validator.unobtrusive.parse("#EventManage");
                                LoadEventList();

                            }
                        });

Нажатие на кнопку сохранения диалога выполняет действие EventSave в контроллере.

public ActionResult EventSave(EventManageModel model)
    {
        if (ModelState.IsValid)
        {
            Event e = new Event();
                    try
                    {
                        //get existing event
                        if (!String.IsNullOrWhiteSpace(model.EventID))
                        {
                            Guid id = default(Guid);
                            if (Guid.TryParse(model.EventID, out id))
                                e = EventService.GetRecord(id, usr);
                        }

                        e.Name = model.Event_Name;
                        e.Date = DateTime.Parse(model.Event_Date);
                        e.Sender = usr;

                        e = EventService.SaveUpdateEvent(e);

                        //just to update the model with saved data.
                        model.EventID = e.Id.ToString();
                        model.Event_Name = e.Name;
                        model.Event_Date = e.Date.ToString("dd/MM/yyyy");

                        TempData["Message"] = string.Format("Event saved successfully.");
                    }
                    catch (ApplicationException ex)
                    {
                        ModelState.AddModelError("_FORM", ex.Message);
                    }
            }
        }
        return PartialView("EventManage", model);
    }

В моей модели есть Eventid, который отслеживает, какое событие настраивается.

public class EventManageModel
    {
        [HiddenInput(DisplayValue = false)]
        public string EventID { get; set; }

        [Required]
        [Display(Name = "Event Name")]
        public string Event_Name { get; set; }

        [Display(Name = "Event Date [DD/MM/YYYY]")]
        [RegularExpression(@"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$", ErrorMessage = ExceptionConstants.ERR_DATE_INVALID)]
        public string Event_Date { get; set; }
    }

В тот момент, когда я нажимаю кнопку «Сохранить» в первый раз, модель, переданная в действие в контроллере, является действительной, с полными действительными данными. возвращенный вид загружается в соответствии с выполнением кнопки вышеупомянутого диалога. однако, сохраняя его во второй раз, передаваемая модель является нулевой.

Это поведение должно быть таким? Или что-то не так с моим кодом где-то?

EDIT

После публикации я запускаю firebug, и кажется, что эта ошибка появляется, когда я нажимаю на любое из текстовых полей в диалоговом окне (которое я не знаю, что бы это значило)

f не определено [Прервать эту ошибку] ​​""); f.settings [g] && f.settings [g] .call (... / \ s /), функция (g, h) {b [h] = e})} ); var d =

jquery .... min.js (строка 22)

Есть идеи?

...