判断 actionmodel的attributes是否包含含有httpmethods的成员
时间: 2024-09-28 16:05:37 浏览: 26
使CheckBoxList的Attributes属性生效(修改微软的一个bug)
ActionModel在ASP.NET Core中主要用于描述HTTP动作(如GET、POST等)。要判断ActionModel的Attributes是否包含用于指定HTTP方法的成员,你需要查看它是否包含了HttpMethodSelectorAttribute或者其派生类,如HttpGetAttribute、HttpPostAttribute等。
以下是一个基本的示例,展示如何做到这一点:
```csharp
public bool HasHttpMethodAttributes(IActionModel model)
{
foreach (var attribute in model.Attributes)
{
if (attribute is HttpMethodAttribute httpMethodAttribute)
{
return true;
}
else if (attribute is ActionMethodSelectorAttribute selector && selector.Methods.Any())
{
// 检查selector.Methods是否包含了HTTP方法
var methods = selector.Methods.Select(m => m.ToString().ToUpper()).ToList();
if (methods.Contains("GET") || methods.Contains("POST") || ... ) // 添加你需要检查的所有HTTP方法
{
return true;
}
}
}
return false;
}
```
这里假设`IActionModel`有一个`Attributes`属性,它是`ActionAttributeCollection`类型的,包含所有附加到ActionModel的属性。通过遍历这些属性并检查它们是否实现了`HttpMethodAttribute`或`ActionMethodSelectorAttribute`,我们可以确定ActionModel是否有指定的HTTP方法。
阅读全文