只是想知道,谷歌搜索如何在 asp mvc 4 中使用过滤器。我发现有些人这样定义它们:
public class CustomFilter : ActionFilterAttribute
有些像这样:
public class CustomFilter : ActionFilterAttribute, IActionFilter
ActionFilterAttribute 已经有所有操作要覆盖,为什么我还要实现接口(interface)?
又比如在下一段代码中,最后再次调用过滤器,这是为什么?
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);
}
}
最佳答案
如果您检查 MSDN definition of ActionFilterAttribute 你会看到它是一个抽象类,它继承了接口(interface) IActionFilter 和 IResultFilter。
实际上继承自ActionFilterAttribute,
public class CustomFilter : ActionFilterAttribute
相当于继承类FilterAttribute和接口(interface)IActionFilter和IResultFilter
public class CustomFilter : FilterAttribute, IActionFilter, IResultFilter
和
没什么不同public class CustomFilter : ActionFilterAttribute, IActionFilter, IResultFilter
所以从 ActionFilterAttribute 继承与从 ActionFilterAttribute 和 IActionFilter 继承没有什么不同。
关于c# - ASP MVC 过滤器,在哪里实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095650/