c# - 如何防止根据条件执行 Controller 操作?

标签 c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有一个包含许多操作的 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/

相关文章:

angularjs - 在 Angular 引导的 MVC 应用程序中有条件地呈现 MVC 包

c# - MVC传模型来查看

c# - 如何关闭 WPF 弹出窗口?

asp.net - 我应该将 docker 与应用程序服务一起使用,而不是直接使用应用程序服务吗?

c# - typeof 和 is 关键字有什么区别?

html - 更改文本区域的高度和宽度

asp.net - Azure asp.net - 为什么 webjob %temp% 文件夹与 Web 应用程序 %temp% 文件夹不同?

javascript - 没有 Razor 编码的 MvcHtmlString

c# - 在 asp.net 后面的代码中访问类型文件的输入控件

c# - Nhibernate:映射有条件的多对多关系?