2010-11-18 12 views
1

ユーザーが情報を保存する(保存通知を表示してから消滅させる)か、送信する(「フォームが送信されました」ページにリダイレクトする)ために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(); 
    } 
} 

そして、保存して提出する方法が、ユーザーが保存したときに、「あなたは正常に保存しました...」ダイアログがポップアップ表示されます。私は正しく何をしていないのですか?

+0

同じ概念がここに記述されています:http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino

答えて

0

ビューからリダイレクトする代わりに、「あなたは正常に保存しました」と表示された後、javascriptを使用してリダイレクトすることができます。

関連する問題