ユーザーが情報を保存する(保存通知を表示してから消滅させる)か、送信する(「フォームが送信されました」ページにリダイレクトする)ためにAjaxを使用しようとしています。いずれの場合も、私はエラーチェックが必要です(これはHtml.EnableClientValidation()
で行い、正常に動作しています)。送信後にリダイレクトしない
現在、私のフォームはこのようになります...
<% using (Ajax.BeginForm("Index", "Scenario", new AjaxOptions {
HttpMethod = "Post", OnBegin = "scenarioCheckForErrors",
OnSuccess = "scenarioSubmitSuccess" }, new { id = "scenarioForm" }))
{ %>
<!-- My form goes here. -->
<div class="submitButtons">
<input type="submit" value="Save" name="submitButton" />
<input type="submit" value="Submit" name="submitButton" />
</div>
} %>
すべてscenarioCheckForErrors
はないですエラーは、検証中に発見されている場合、一部の画像を変更します。 scenarioSubmitSuccess
は保存通知を表示しています。
これらの間で、私は実際にデータの保存を処理し、そのような「もの」を実行するためにコントローラを使用しています。ここではメソッドの一部です:、...私は「完了」ページに起こるためにリダイレクトを取得する方法に苦しんでいます
/// <summary>
/// Save a the scenario.
/// </summary>
/// <param name="scenario"></param>
/// <returns></returns>
private ActionResult Save(Scenario scenario)
{
if (ModelState.IsValid && TryUpdateModel(scenario, "Scenario"))
{
// Save the scenario.
}
return View(scenario);
}
/// <summary>
/// Submit the scenario.
/// </summary>
/// <param name="scenario"></param>
/// <returns></returns>
private ActionResult Submit(Scenario scenario)
{
if (TryUpdateModel(scenario, "SaveScenario"))
{
// Call Save() method, and then...
return Redirect("/Scenario/Done");
}
return View(scenario);
}
[HttpPost]
[Header("Setup Scenario")]
public ActionResult Index(string submitButton) {
// Determine whether to just save or to save and submit.
switch (submitButton)
{
case "Save":
return Save(scenario);
case "Submit":
return Submit(scenario);
default:
// Should never be reached.
return View();
}
}
そして、保存して提出する方法が、ユーザーが保存したときに、「あなたは正常に保存しました...」ダイアログがポップアップ表示されます。私は正しく何をしていないのですか?
同じ概念がここに記述されています:http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino