【发布时间】:2010-04-15 21:23:57
【问题描述】:
在最近关于 MVC 属性的question 中,有人询问在操作方法上使用 HttpPost 和 HttpDelete 属性是否会导致允许请求类型或不允许请求(因为它不能同时是 Post 和同时删除)。我注意到 HttpPostAttribute 和 HttpDeleteAttribute 都从中派生的 ActionMethodSelectorAttribute 装饰有
[AttributeUsage(AttributeTargets.Method,
AllowMultiple = false,
Inherited = true)]
我原以为它不允许 HttpPost 和 HttpDelete 因此在同一个方法上使用,但编译器没有抱怨。我有限的测试告诉我,基类上的属性使用被简单地忽略了。 AllowMultiple 似乎只不允许将 same 属性中的两个应用于方法/类,并且似乎没有考虑这些属性是否派生自配置为不允许倍数的同一类。此外,基类的属性用法甚至不妨碍您更改派生类的属性用法。既然如此,那么在基本属性类上设置值有什么意义呢?它只是建议性的,还是我错过了它们工作方式的基本内容?
仅供参考 - 事实证明,同时使用这两种方法基本上排除了该方法的考虑。属性是独立评估的,其中一个属性将始终指示该方法对请求无效,因为它不能同时是 Post 和 Delete。
【问题讨论】:
标签: .net attributes allowmultiple