ASP.NET MVC查询的常规处理程序

时间:2010-12-09 15:40:29

标签: c# .net asp.net-mvc

我需要为所有ASP.NET MVC查询创建一个通用处理程序。现在我使用Application_BeginRequest,但不仅有ASP.NET MVC查询。

我看到的一个选项是创建一个公共基本控制器并在其构造函数中执行我的逻辑。但可能还有其他选择吗?

3 个答案:

答案 0 :(得分:2)

您考虑过action filters吗?

答案 1 :(得分:1)

您必须将 ActionFilter 添加到您的控制器。

为了做到这一点,你必须创建一个继承自 ActionFilterAttribute 的类。 例如:

Public Class CustomFilterAttribute
    Inherits ActionFilterAttribute
End Class

只需将此属性应用于控制器:

<CustomFilter()> _
Public Class MyController

ActionFilterAttribute中有4个方法可以覆盖:

OnActionExecuted
OnActionExecuting
OnResultExecuted
OnResultExecuting

覆盖它们,并且每次对控制器方法的请求都会执行此代码

答案 2 :(得分:1)

IDSA,

你可能能够在基础控制器中使用这种方法沙沙作响:

protected override void Initialize(RequestContext requestContext)
{
   Lang = requestContext.RouteData.Values["lang"].ToString() 
   ?? System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;

   ViewData["Lang"] = Lang;

   base.Initialize(requestContext);
   // your custom logic here...
}

或者:

protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
    base.Execute(requestContext);
    // intercepting code here...
}

或:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    base.OnActionExecuting(filterContext);
    // one stage later intercepting code here
}

谁知道你的意思:)。