ASP.NET MVC Controller中的执行顺序是什么?

时间:2010-03-25 08:08:16

标签: c# asp.net-mvc vb.net action-filter

假设我有一个名为“HomeController”的控制器,它继承自Mvc.Controller。另外说我已经编写了控制器的构造函数和一些用于某些操作的过滤器。

Public Class ClientController
    Inherits System.Web.Mvc.Controller

    Public Sub New()
        ''Some code
    End Sub

    <SomeActionFilter()> _
    Function Index() As ActionResult
        Return View()
    End Function
End Class

我的问题是:

  1. 构造函数,过滤器,操作的执行顺序是什么?
  2. 我是否可以为构造函数设置过滤器,如果我不想通过检查某些条件来运行其中的代码?

1 个答案:

答案 0 :(得分:2)

构造函数将首先出现。取决于过滤器或操作方法将执行的过滤器类型。请参阅此处查看filter types

过滤器不拦截构造函数。如果要控制Controller的构造函数调用,则需要通过实现IControllerFactory(或DefaultControllerFactory)来构建自定义控制器工厂,并将其注册到ControllerBuidler,例如: 申请开始时ControllerBuilder.Current.SetControllerFactory(typeof(MyControllerFactory))

  

如果我不想在其中运行代码   通过检查一些条件?

你不能直接在构造函数中编写该代码(例如,基本控制器中的检查条件可以重用)?在这种情况下,为什么需要过滤器?