在我的 C# .NET 4 MVC 3 应用程序中,我有一个用于一组 CRUD 页面的删除控制器,它使用Post Redirect Get模式在成功删除后重定向到索引控制器。仅当此页面未被此类操作重定向到时,我才想在索引页面上呈现一个按钮。有没有一种简单的方法来检测当前页面是否被重定向到(即作为 PRG 重定向的结果到达)?
阅读http://blog.simonlovely.com/archive/2008/11/26/post-redirect-get-pattern-in-mvc.aspx后,我目前的方法是在方法成功TempData
后在我的删除控制器中设置它DeleteMyEntity
:
try {
MyService.DeleteMyEntity(MyViewModel.MyEntity);
TempData["Redirected"] = true;
args = new RouteValueDictionary(new { Foo = 1, Baa = 2 });
return RedirectToAction("Index", args);
} catch (Exception e)
{
//Logging etc. - redirect should never be reached on exception (and TempData item not set)
throw(e);
}
然后在我的索引控制器中我检查这个值是否存在并且是真的:
if (TempData["Redirected"] != null)
{
//we can then do something useful with this
}
我看到的另一个机会是args
在控制器中添加另一个项目并检查它,但在这种情况下,我不妨只使用TempData
. 有没有办法在请求上使用 HTTP 响应代码来执行此操作,而无需通过 withTempData
或类似机制传递此数据?