我正在尝试使用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);
}
我正在努力解决如何将重定向发生在“完成”页面上,但仍然允许在用户保存时弹出“您已成功保存...”对话框。我做得不好?
答案 0 :(得分:0)
您可以在显示“已成功保存”后使用javascript重定向,而不是从视图重定向。