提交后没有重定向

时间:2010-11-18 17:00:39

标签: asp.net-mvc ajax asp.net-mvc-2 redirect

我正在尝试使用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);
}

我正在努力解决如何将重定向发生在“完成”页面上,但仍然允许在用户保存时弹出“您已成功保存...”对话框。我做得不好?

1 个答案:

答案 0 :(得分:0)

您可以在显示“已成功保存”后使用javascript重定向,而不是从视图重定向。