如何防止用户在 MVC 中手动输入页面的 URL?
例如,我有一个返回错误视图的控制器方法:
// GET: /Checkout/Error
public ActionResult Error()
{
return View("Error")
}
编辑:以及返回成功视图的控制器方法:
// GET: /Checkout/Complete
public ActionResult Complete()
{
var order = /* get the order */
return View("Complete", order)
}
如果订购过程中出现问题,我会重定向到它:
public ActionResult Submit()
{
if (/*order succeeds*/) {
return RedirectToAction("Complete");
}
else
return RedirectToAction("Error");
}
但是用户可以手动输入“www.mysite.com/Checkout/Error”,并在结帐工作流的上下文之外获取错误视图。
我环顾四周,发现 ChildActionOnly,但这似乎只适用于从视图中调用操作,这不适用于这里。
我想我可以在错误操作方法的开头手动检查订单是否确实存在问题,并在这种情况下返回错误视图并重定向用户,但似乎必须有一个更简单的防止用户手动导航到这样的页面的方法。
编辑:这同样适用于完成的视图。用户可以输入对应于操作的 URL。如何防止像这样调用此操作?