MVC中的attributes和filters有什么区别现在,我可以求一个比较,而不仅仅是一个定义。示例:SomeClassAttribute(或ISomeClassAttribute)VSSomeClassFilter(或ISomeClassFilter)我认为它们可以以相同的方式使用,但一般来说“应用属性”和“过滤器是它们产生的功能”。所以我可以“向方法(或类或其他)添加一个属性以应用过滤器。”所以我可以“向方法(或类或其他)添加一个属性以应用过滤器。”你在那句话中明白了。过滤器和属性不是完全可比的概念,它们提供两种不同的功能。我相信这篇MSDN文章非常清楚地介绍了MVC中的过滤。属性(至少是应用于过滤器的属性)标记过滤器应用于什么,即操作方法或控制器。一个示例是Authorize属性。此属性对应于实现IAuthorizationFilter接口的AuthorizationFilter。将Authorize属性应用于操作方法告诉MVC授权对该操作方法的请求,将其应用于控制器告诉MVC授权控制器的操作方法的任何请求,或者您也可以全局应用授权到所有请求。现在我说,至少是那些适用于过滤器的属性,因为属性是一个.NET概念和语法,而不仅仅是MVC。许多其他事物都存在属性,并且通常提供有关属性、方法、应用它们的类的附加信息。属性是.NET的一项功能,MVC过滤器是使用该功能实现的。例如,System.Web.Mvc.HandleErrorAttribute派生自BCLSystem.Attribute。过滤器通过挂钩将行为应用到MVC管道(粗略地说)。在大多数情况下,属性用于描述有关方法/类/等的元数据。例如,您可以使用Serializable属性指示类可以序列化,使用TestClass属性将类标记为测试,使用Obsolete属性将某些内容标记为过时。反射用于由想要使用它们的进程提取此信息。关于属性的问题很好地涵盖了它。MVC中的filter属性(例如AuthorizeAttribute)传达了类似于其他属性的附加信息——AuthorizeAttribute修饰的控制器方法或类表示MVC使用需要授权。但与其他一些属性不同的是,过滤器属性本身包含执行实际功能的逻辑——AuthorizeAttribute派生自Attribute(通过FilterAttribute)并实现IAuthorizationFilter。当MVC发现有AuthorizeAttribute修饰的控制器类时,会调用AuthorizeAttribute.OnAuthorization()方法进行授权。另外,当你指定一个全局过滤器时,你将属性类本身添加到过滤器列表中,这可能有点混乱,但它是如何工作的:全部内容,如果对你有用,你需要进一步了解C#学习教程,希望大家多多关注。}本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
