【问题标题】:ASP MVC Filters, where implement interface or not?ASP MVC过滤器,在哪里实现接口?
【发布时间】:2013-04-12 07:37:03
【问题描述】:

只是想知道如何在 asp mvc 4 中使用过滤器。我发现有些人是这样定义它们的:

public class CustomFilter : ActionFilterAttribute

还有一些是这样的:

public class CustomFilter : ActionFilterAttribute, IActionFilter

ActionFilterAttribute 已经有所有操作需要重写,为什么还要实现接口呢?

同样例如在下一个代码中,最后再次调用过滤器,这是为什么呢?

public class 

CustomActionFilter : ActionFilterAttribute, IActionFilter
{
    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)


    {
        // TODO: Add your acction filter's tasks here

        // Log Action Filter Call
        MusicStoreEntities storeDB = new MusicStoreEntities();

        ActionLog log = new ActionLog()
        {
            Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
            Action = filterContext.ActionDescriptor.ActionName + " (Logged By: Custom 

Action Filter)",
            IP = filterContext.HttpContext.Request.UserHostAddress,
            DateTime = filterContext.HttpContext.Timestamp
        };

        storeDB.ActionLogs.Add(log);
        storeDB.SaveChanges();

        this.OnActionExecuting(filterContext);
    }
}

【问题讨论】:

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


    【解决方案1】:

    如果您检查MSDN definition of ActionFilterAttribute ,您会看到它是一个抽象类,继承了接口IActionFilter AND IResultFilter

    实际上继承自ActionFilterAttribute

    public class CustomFilter : ActionFilterAttribute
    

    相当于继承类FilterAttribute和接口IActionFilterIResultFilter

    public class CustomFilter : FilterAttribute, IActionFilter, IResultFilter
    

    和没有什么不同

    public class CustomFilter : ActionFilterAttribute, IActionFilter, IResultFilter
    

    所以从 ActionFilterAttribute 继承与从 ActionFilterAttributeIActionFilter 继承没有什么不同。

    【讨论】:

    • 但是看起来有点多余,不是吗?那么从 ActionFilterAttribute 继承就足够了?
    • @user1777914,完全多余。是 ActionFilterAttribute 是总包。
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2023-04-08
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多