Вернуть ошибку проверки обратно в диалоговое окно jQuery в MVC 3 - PullRequest
2 голосов
/ 25 марта 2012

Привет, есть страница, которая загружает модальное диалоговое окно jQuery, модальное содержит форму.Как я могу вернуть ошибку, чтобы она загружалась в модальном режиме, если я возвращаю PartialView, страница просто загружается с содержимым диалоговой формы (который просто должен быть в модальном)

вот вид

<span><a id="end" href="#">Launch End Dialog</a> </span>



<div id="end-dialog" class="dialog">
  <div id="end-inner"></div>
  <hr />
</div>

<script type="text/javascript">
  $(function () {


    var endDialog = $("#end-care-plan-dialog").dialog({

    });

    $("#end").click(function () {
      endDialog.dialog('close');
    });

    $('#end').click(function () {
      $('#end-inner').load(baseUrl + "/End", $.param({ id: '@Model.id' }),
              function () {
                endDialog.dialog('open');
              });
    });
  });
</script>

вот мой контроллер

[HttpPost]
public ActionResult End(EndVM end)
{
  if (ModelState.IsValid)
  {
    //do work

  }

  //return so that pop up now has validation errors
  return PartialView(end);
}

Примечание - jquery.validate и jquery.validate.unobstrusive загружаются в представления

Спасибо, надеюсь, это имеет смысл.

Обновление: Диего - это частичное представление, содержащее форму (которая загружается в текст)

@using (Html.BeginForm<EndController>(c => c.End(@Model.Id)))

{@ Html.HiddenFor (m => m.Id) @Html.DropDownListFor (m => m.EndReasonId, RefData.EndReasons) Другая причина @ Html.EditorFor (m => m.EndReasonOther) @ Html.ValidationMessageFor (m => m.EndReasonOther) @ (Html.ActionLink (c => c).Edit (@ Model.Id), "Cancel")) @ Html.SubmitButton ("End", "End")}

Где я могу адаптировать ваш код?

Спасибо

1 Ответ

1 голос
/ 25 марта 2012

Это имеет смысл.Вам просто нужно убедиться, что форма отправлена ​​через AJAX, иначе вся страница обновится.Чтобы переопределить поведение по умолчанию, вам нужен обработчик для события submit формы.Предполагая, что ваша форма это myForm.

$('#myForm').submit(function() { // catch the form's submit event
    $.ajax({ 
        data: $(this).serialize(), // get the form data
        type: $(this).attr('method'), // GET or POST
        url: $(this).attr('action'), // the file to call
        success: function(response) { // on success..
            $('#end-inner').html(response); // update the DIV
        }
});
return false; // cancel original event to prevent form submitting
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...