情境:
单击产品列表的一个产品上的删除超链接将调用/Product/Delete
HttpGet操作方法。然后,用户单击确认按钮以调用/Product/Delete
HttpPost操作方法,该操作方法又将用户重定向到/Product/Deleted
HttpGet操作方法。
我想阻止用户跳过/Product/Delete
并直接调用/Product/Deleted
。
答案 0 :(得分:4)
在重定向之前将某些内容放入TempData
。然后在Deleted
操作中验证TempData
中是否存在此内容。
[HttpPost]
public ActionResult Delete()
{
// TODO: Delete
TempData["deleted"] = true;
return RedirectToAction("deleted");
}
public ActionResult Deleted()
{
if(TempData["deleted"] == null)
{
throw new HttpException(404, "not found");
}
return View();
}
你应该知道这是有代价的。如果用户在浏览/product/deleted
动作时按 F5 ,他将获得404.所以基本上你要做的是设计不好,我建议你避免它。