2010-11-18 15 views
1

Bir kullanıcının bilgi kaydetmesine (daha sonra kaybolmaya devam eden bir bildirim gösterilmesini sağla) veya göndermesine izin vermek için Ajax'ı kullanmaya çalışıyorum ("formunuz gönderildi" sayfasına yönlendir). Her iki durumda da hata kontrolüne ihtiyacım var (Html.EnableClientValidation() aracılığıyla yaptım ve düzgün çalışıyor). Gönderim Sonrası Yönlendirme Yok

Halen benim form hataları doğrulama sırasında bulunmuştur eğer

<% 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> 
} %> 

tamamı scenarioCheckForErrors yapmasıdır göre bazı görüntüler değiştirir ... Bu gibi görünüyor. scenarioSubmitSuccess, kaydetme bildirimini görüntülüyor.

Tüm bunlar arasında, veriyi kaydetmeyi ve tüm bu tür "şeyler" i gerçekleştirmeyi gerçekten denetlemek için denetleyicimi kullanıyorum. İşte yöntemin bir parçasıdır: ... Ben "Bitti" sayfasına gerçekleşmesi yönlendirme krokisi ile mücadele ediyorum

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

Ve Kaydet ve Gönder'i yöntemleri ancak Kullanıcı kaydettiğinde açılır pencereye "Başarılı bir şekilde kaydettiniz ..." iletişim kutusuna izin vermek için Neyi doğru yapmıyorum?

+0

Burada açıklanan aynı kavram: http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino

cevap

0

Görünümden yeniden yönlendirme yapmak yerine, "Başarıyla kaydettirdiniz" mesajını gösterdikten sonra javascript'i kullanarak yeniden yönlendirebilirsiniz.

İlgili konular