3

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

我的主页视图中有一个局部视图。

Partial View 提交一个表单,调用 HomeController 中的 Action 方法。

它适用于服务器验证,问题是在发布后只呈现部分视图。

发布后如何渲染整个主页视图?

关于代码:

在 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();
  }
}

此时,post 后,ascx 显示服务器验证错误,但仅渲染 PartialView ascx 代码。发帖后的 URL 如下所示:

http://xxxxxxxxxxx/Home/Request

我想要的是显示整个主页视图,其中 ascx 显示服务器验证错误。

4

3 回答 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>

假设你的 view/ascx/HTML 是这样的:

<div id="formDiv">
    <% Html.RenderAction("Request"); %>
</div>
于 2010-11-16T21:28:30.467 回答
2

Change return type also:

 [HttpPost]
public PartialViewResult Request(RequestModel model)
{
  if (ModelState.IsValid)
  {
    // Saving data .....
  }
  else
  {
     // Show Server Validation Errors
     return PartialView();
  }
}
于 2010-11-07T14:12:31.577 回答
2

我在代码中遇到了同样的问题,所以我只是对我的代码做了一个小的修改,它就起作用了。我没有返回相同的视图,而是使用

return Redirect(Request.Referrer)

早些时候:

return View();
于 2012-10-18T10:55:56.223 回答