Я пытаюсь использовать 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» страницы, но чтобы по-прежнему разрешить всплывающее диалоговое окно «Вы успешно сохранили ...», когда пользователь сохраняет. Что я не делаю правильно?
Описанная здесь концепция: http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino