部分 ASP.NET MVC 视图提交

3

我是 ASP.NET MVC 的新手,所以问题可能看起来有点“愚蠢”,抱歉。

我的 Home 视图中有一个局部视图。

这个局部视图通过调用 HomeController 中的一个操作方法来提交表单。

它可以很好地处理服务器验证,问题在于提交后只呈现了局部视图。

如何在提交后呈现整个 Home 视图?

关于代码:

在 PartialView 中,我有一个表单:

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

Request是在我的HomeController中定义的ActionResult。

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

这时,在提交表单后,ascx将显示服务器验证错误,但只呈现PartialView ascx代码。提交后的Url看起来像这样:

http://xxxxxxxxxxx/Home/Request

我希望展示整个Home视图,其中包括ascx,同时显示服务器验证错误。

1
将asp.net-mvc标签使用为“mvc”,因为'mvc'是一个通用的标签。 - Stefanvds
你的标签没问题。你只需要编辑你的问题,加上一些细节和一点源代码即可。 - Junior Mayhé
3个回答

5

使用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>

假设您的视图/ascx/HTML如下所示:
<div id="formDiv">
    <% Html.RenderAction("Request"); %>
</div>

2

同时也更改返回类型:

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

2
我在代码中遇到了同样的问题,所以我只对代码进行了小修改,就解决了问题。我不再返回相同的视图,而是使用了


return Redirect(Request.Referrer)

之前:

return View();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接