2010-11-18 2 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 отображает уведомление о сохранении.

Между всем этим я использую свой контроллер, чтобы фактически справляться с сохранением данных и делать все такие «вещи». Вот часть метода:

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

И Сохранить и Сохранить методы ...

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

Я борюсь с тем, как получить редирект случиться с «Done» страницы, но чтобы по-прежнему разрешить всплывающее диалоговое окно «Вы успешно сохранили ...», когда пользователь сохраняет. Что я не делаю правильно?

+0

Описанная здесь концепция: http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino

ответ

0

Вместо перенаправления из представления вы можете перенаправить с помощью javascript после того, как вы показали «Вы успешно сохранили».

Смежные вопросы