我有一个包含此代码的表单:
header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
所以基本上,只要访问者点击提交,页面刷新,我就会进行操作。一切都运行得很好,但似乎我必须在禁用重新发布刷新之间做出选择:
[HttpPost]
public ActionResult JsonNewsfeed(int id)
{
var db = new dekhosaleEntities1();
sale s = db.sales.First(m => m.sale_id == id);
List<sale> sale1 = db.sales.ToList();
saleviewmodel model = new saleviewmodel
{
currentsale = s,
Sales = sale1
};
return Json(model);
}
或显示我错误&amp;成功消息,但如果我这样做,如果访问者刷新页面,则重新提交。
我在线阅读了两个解决此问题的方法:
那么,还有其他方法可以达到这个目的吗?
答案 0 :(得分:2)
为ex创建一个uniqe票证,如时间戳。将它作为表单的附加参数。现在,您可以将处理后的请求存储在会话或cookie中。一个简单的例子:
客户端:
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="requestTicket" value="<?php echo time(); ?>" />
...
服务器:
if(!array_key_exists("rt", $_SESSION))
$_SESSION["rt"] = array();
if(!array_key_exists($_REQUEST["requestTicket"], $_SESSION["rt"])) {
//do the job
//...
$_SESSION["rt"][$_REQUEST["requestTicket"]] = true;
}