以下是控制器代码:
[HttpPost]
public ActionResult Index(CallRec objCallRec)
{
// Add the record to the DB
objCallRec.Add();
ViewData["Message"] = MvcHtmlString.Create("(Your eference number for this lead is " + objCallRec.CustID + ")." + "<br />" + "<br />" + "Please close this browser.");
ModelState.Clear();
return View("ThankYou");
}
当显示ThankYou并使用F5功能键手动刷新页面时,将再次输入到DB。我收到了这条提示信息:
要再次显示网页,Internet Explorer需要重新发送您之前提交的信息。 如果您要进行购买,则应单击“取消”以避免重复交易。否则,请单击“重试”以再次显示该网页。
有没有办法防止这种情况发生?我使用过ModelState.clear();
它并没有阻止这一点。
答案 0 :(得分:0)
因为你已经回复了一个页面级别。但是,您可以将用户重定向到另一个操作结果,而不是像索引页面那样感谢用户获取潜在客户,他们可以将其带到他们想要的任何地方。否则,您可以创建一个Ajax帖子,以便用户保存并在响应中替换部分视图 如果我选择合适的工作,那么ajax方法将是首选方案。
HTH
答案 1 :(得分:0)
而不是
return View("ThankYou");
尝试
return RedirectToAction("ThankYou");
return View(&#34; Thankyou&#34;)告诉MVC生成要为指定视图显示的HTML并将其发送到浏览器。这就像Asp.Net WebForm中的Server.Transfer()一样。
而在RedirecToAction中,浏览器会收到重定向通知并对指定的操作发出新请求。这就像Response.Redirect()