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);
}
我與如何讓重定向發生在「完成」頁面中掙扎,但仍然允許用戶保存時彈出「您已成功保存...」對話框。我沒有正確地做什麼?
相同的概念在這裏描述:http://stackoverflow.com/questions/4047208/asp-net-mvc-prevent-double-form-posting/4047387 – Charlino 2010-11-18 17:35:01