3

ASP.NET MVC は初めてなので、質問が「ばかげている」ように見えるかもしれません。申し訳ありません。

ホームビュー内に部分ビューがあります。

部分ビューは、HomeController 内のアクション メソッドを呼び出すフォームを送信します。

サーバー検証で問題なく動作します。問題は、投稿後に部分ビューのみがレンダリングされることです。

投稿後にホームビュー全体をレンダリングするにはどうすればよいですか?

コードについて:

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

私が欲しいのは、サーバー検証エラーを示す 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

戻り値の型も変更します。

 [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 に答える