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