我正在学习Asp.net MVC 3.只是想知道,有没有办法定义一个在执行任何控制器的任何其他方法之前执行的方法?这意味着它应该像基础“Controller”类的构造函数一样工作。
这将包括一些常见功能,例如检查用户会话/如果没有登录重定向到登录页面,否则从db中设置一些将在应用程序中的任何位置使用的常用值。我只想写一次,不想在每个控制器方法上调用一个方法。
问候
答案 0 :(得分:7)
这就是动作过滤器的用途。有一些已经构建在框架中,如AuthorizeAttribute
:
[Authorize(Roles = "Admins")]
public ActionResult Index()
{
return View();
}
编辑:
可以在操作,控制器或全局过滤器上设置过滤器。
[Authorize(Roles = "Admins")]
public class LinkController : Controller
{
//...
}
Inside Global.asax
protected void Application_Start()
{
GlobalFilters.Filters.Add(new AuthorizeAttribute { Roles = "Admins" });
//...
}