在C#MVC中,您可以设置一个全局行为,每个动作方法必须在处理其余请求之前执行该行为吗?

Ben*_*enM 3 .net c# asp.net-mvc dry actionresult

我有一个相当大的MVC Web应用程序,我在每个控制器中重复一个操作,看看客户是否已经完成了应用程序进程(在这种情况下,我检查了他们的配置文件中的标志).理想情况下,我想从每个操作方法中删除此代码,并将其应用于返回操作结果的所有操作方法.

Dar*_*ren 5

您可以创建一个自定义属性来处理此问题,您可以在Controller级别或ActionResult级别拥有该属性.

[CompletedApplication("User")]
public ActionResult YourAction
{
    return View();
}

public class CompletedApplicationAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        // Your logic here
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)