2015-05-21 137 views
1

我想知道自定义操作筛选器和ASP.NET MVC中的自定义操作选择器之间的区别。ASP.NET MVC中的自定义操作筛选器和自定义操作选择器之间有什么区别?

说,我们要限制谁可以访问的操作方法基于某些规则在控制器上。我既可以创建扩展ActionFilterAttribute类或延长ActionMethodSelectionAttribute类的行为过滤器,这样我就可以有类似:

[MyRestriction] 
public ActionResult AnyAction(){} 

任何人都可以解释它们之间的差异,这样我可以做出正确的决定?

回答

3

如果您查看ActionMethodSelectionAttribute的文档,您会在页面的最底部看到还有许多其他类来自此属性。

这些包括:

  • Microsoft.Web.Mvc.AjaxOnlyAttribute
  • System.Web.Mvc.AcceptVerbsAttribute
  • System.Web.Mvc.HttpDeleteAttribute
  • System.Web.Mvc.HttpGetAttribute
  • System.Web.Mvc.HttpHeadAttribute
  • System.Web.Mvc.HttpOptionsAttribute
  • System.Web.Mvc.HttpPatchAttribute
  • System.Web.Mvc.HttpPostAttribute
  • System.Web.Mvc.HttpPutAttribute
  • System.Web.Mvc.NonActionAttribute

换句话说,这些是控制其中,当有几个不同的选择可供选择处理法被路由时所选择的属性(即,存在2种不同的索引方法中,一个装饰有[HttpGet]和一个与[HttpPost])。

ActionFilterAttribute,在另一方面,被称为只有当一个动作被实际执行。

想想看这样,选择可以运行,即使动作不执行,该ActionFilter只有当它运行。选择过滤器仅用于确定动作是否为匹配条件,动作过滤器用于在执行之前,之后等执行某个动作。执行动作或响应。

+0

难道我们可说什么呢,而ActionFilterAttribute用于前或运行被称为操作后添加一些额外的逻辑是,ActionMethodSelection用于路由? – jobmo

+0

@jobmo - 这正是我所说的。 –

相关问题