2

mvc 4.0 の送信イベントでフォームを送信しています。フォームを送信した後、そのアクションに投稿され、レコードが作成されます。ページを更新したときにレコードを作成した後、別の重複レコードが作成されます。

私はすでに以下を使用しましたが、成功しません:

ModelState.Clear();
ModelState.SetModelValue("Key", new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture));
ModelState.Remove("Key");

AJAX フォーム Post を使用したくありません。また、別のページにリダイレクトしたくありません。

!Page.IsPostBack()mvc4.0のように asp.net で使用する方法はありますか。

セッションも使いたくない。

(Microsoft は、MVC には asp.net のようなビュー ステートがないことを MVC について吹き飛ばしていますが、今はそうは思いません)。

4

2 に答える 2

1

Ajax.post を使用してフォームを送信できます。以下のようにフォームタグを作成します。

@using (@Html.BeginForm("Index", "ControllerName", FormMethod.Post, new { id = "anyFormName" }))

ページから ajax ポストを呼び出します。

$.ajax({
        url: "/ControllerName/Index",
        type: "POST",
        data: $("#anyFormName").serialize(),
        success: function (data) {
            $("#divFormContainer").html(data);
        }
    });

コントローラーで、以下のような Index メソッドを作成します。

[HttpPost]
public ActionResult Index(FormCollection fc)
{
   // Put the form post logics here....
   // Build the model for the view...
   return PartialView("Index", model);
}
于 2013-10-21T09:55:21.007 に答える