Частичная отправка представления ASP.NET MVC

Я новичок в ASP.NET MVC, поэтому вопрос может показаться «глупым», извините.

У меня есть частичный вид в моем домашнем представлении.

Частичное представление отправляет форму, вызывающую метод действия внутри HomeController.

Он отлично работает с проверкой сервера, проблема в том, что после публикации отображается только частичное представление.

Как я могу визуализировать весь домашний вид после публикации?

О коде:

Внутри PartialView у меня есть форма:

<% using (Html.BeginForm("Request", "Home")) { %>

Запрос - это ActionResult, определенный внутри моего HomeController.

[HttpPost]
public ActionResult Request(RequestModel model)
{
  if (ModelState.IsValid)
  {
    // Saving data .....
  }
  else
  {
     // Show Server Validation Errors
     return View();
  }
}

В это время после публикации ascx показывает ошибки проверки сервера, но отображается только ascx-код PartialView. URL-адрес после публикации выглядит так:

http://xxxxxxxxxxx/Home/Request

Я хочу показать все домашнее представление с ascx внутри, показывающим ошибки проверки сервера.


person opaera    schedule 29.10.2010    source источник
comment
используйте метку asp.net-mvc, поскольку «mvc» - это общая метка.   -  person Stefanvds    schedule 29.10.2010
comment
ваш тег в порядке. вам просто нужно отредактировать свой вопрос и добавить некоторые детали и небольшой исходный код   -  person Junior Mayhé    schedule 29.10.2010


Ответы (3)


Попробуйте выполнить частичную отправку с помощью jQuery:

<script type="text/javascript">
$(document).ready(function () {
    $("input[type=submit]").live("click", function () {
        var f = $("input[type=submit]").parents("form");
        var action = f.attr("action");
        var serializedForm = f.serialize();
        $.ajax({
            type: 'POST',
            url: action,
            data: serializedForm,
            success: function (data, textStatus, request) {
                if (!data == "") {
                    // redisplay partial view
                    $("#formDiv").html(data);
                }
                else {
                    // do whatever on sucess
                }
            }
        });
        return false;
    });
});
</script>

Предполагая, что ваш view / ascx / HTML выглядит примерно так:

<div id="formDiv">
    <% Html.RenderAction("Request"); %>
</div>
person Johannes Setiabudi    schedule 16.11.2010

Также измените тип возвращаемого значения:

 [HttpPost]
public PartialViewResult Request(RequestModel model)
{
  if (ModelState.IsValid)
  {
    // Saving data .....
  }
  else
  {
     // Show Server Validation Errors
     return PartialView();
  }
}
person gdbdable    schedule 07.11.2010

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

return Redirect(Request.Referrer)

Ранее:

return View();
person Nitin Joshi    schedule 18.10.2012