我有一个包含许多操作的 Controller 。 我需要根据这种情况阻止执行某些操作:
if (Session["MyObject"] == null) return RedirectToAction("Introduction");
它应该重定向到默认的 Introduction 操作。
我可以把这个条件放在每个 Action 中,但我想只在一个地方定义这个条件,比如在 Controller 的构造函数中。
有什么想法吗?谢谢。
最佳答案
这是一个快速模型,但我认为这个想法成立
public class CheckSessionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["MyObject"] == null)
{
// redirect must happen OnActionExecuting (not OnActionExecuted)
filterContext.Result = new RedirectToRouteResult(
new System.Web.Routing.RouteValueDictionary {
{"controller", "Tools"}, {"action", "CreateSession"}
}
base.OnActionExecuting(filterContext);
}
}
关于c# - 如何防止根据条件执行 Controller 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14610518/