现在的位置: 首页 > 综合 > 正文

Smark.Web的Filter功能

2012年09月27日 ⁄ 综合 ⁄ 共 1107字 ⁄ 字号 评论关闭

       Smark.Web支持Filter功能,可以对请求进行拦载处理;开发人员通过定义Filter可以对action的处理进行控制,包括处理提交值,日志和决定是否执行相关action操作等。实现一个Filter非常简单只要继承Smark.Web.FilterAttribute即可,重写OnExecute方法进行功能切入。

    public class Test:Smark.Web.FilterAttribute

    {

        protected override void OnExecute(FilterContext action)

        {

            MVCContext.Current["TestFilter"] = this.GetType().ToString();

            action.Execute();

        }

    }

红色代码表示是否执行往下继续执行,如果不调用则不会执行。

使用Filter可以在Controller上标记,则应用到所有Controller里的action;也可以单独应用到某个Action上。

    [Smark.Web.Controller("/")]

    [Filters.Test]

    public class Root

    {

      

        public class Default : Smark.Web.Action

        {

            protected override void OnExecute()

            {

                base.OnExecute();

            }

        }

    }

可以根据实际情况来定义多个Filter,对于Filter的级别是最开始标记的优先处理。

既然有Filter那同样存在SkipFilter, SkipFilter主要是用来描述这个action不被某个Filter处理。

    [Smark.Web.Controller("/")]

    [Filters.Test]

    public class Root

    {

       [Smark.Web.SkipFilter(typeof(Filters.Test))]

        public class Default : Smark.Web.Action

        {

            protected override void OnExecute()

            {

                base.OnExecute();

            }

        }

    }

 

抱歉!评论已关闭.