Partial ASP.NET MVC View submit

眉间皱痕 提交于 2019-12-10 21:29:43

问题


I'm new in ASP.NET MVC so the question could appear 'stupid', sorry.

I have a Partial View inside my Home view.

The Partial View submit a form calling an Action Method inside the HomeController.

It works fine with server validation, the problem is that after the post only the Partial View is rendered.

How can I render the entire Home view after post?

About the code:

Inside PartialView I have a form:

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

Request is a ActionResult defined inside my HomeController.

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

At this time, after the post, the ascx shows the server validation erros but only the PartialView ascx code is rendered. The Url looks like this after the post:

http://xxxxxxxxxxx/Home/Request

What I want is showing the entire Home view with the ascx inside showing server validation errors.


回答1:


Try to do a partial submit using 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>

Assuming your view/ascx/HTML is something like this:

<div id="formDiv">
    <% Html.RenderAction("Request"); %>
</div>



回答2:


Change return type also:

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



回答3:


I was facing same issue in code, so I just made a small modification in my code and it worked. Instead of returning the same view, I used

return Redirect(Request.Referrer)

Earlier:

return View();


来源:https://stackoverflow.com/questions/4050596/partial-asp-net-mvc-view-submit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!