我有一段像
这样的代码foreach(var controller in controllers)
{
// ...
var actions = controller.GetMethods()
.Where(method => method.ReturnType == typeof(IHttpActionResult));
foreach(var action in actions)
{
// ...
var httpMethodAttribute = action.GetCustomAttributes(typeof(System.Web.Mvc.ActionMethodSelectorAttribute), true).FirstOrDefault() as System.Web.Mvc.ActionMethodSelectorAttribute;
// ...
}
}
但由于某些原因httpMethodAttribute
总是null
,即使我可以确认action
有CustomAttribute
is
个System.Web.Mvc.ActionMethodSelectorAttribute
。知道我做错了吗?
答案 0 :(得分:3)
.row-eq-height{
display: flex;
flex-wrap: wrap;
}
#col-7{
background-image:url('/site/templates/images/image.jpg');
border: none;
}
.opaque-7{
background-color:#24B5B0;
filter: alpha(opacity=80);
-moz-opacity: 0.8;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
-khtml-opacity: 0.8;
opacity: 0.8;
padding-left:5%;
padding-top:10%;
padding-bottom:10%;
bottom:0;
margin-top:40%;
position: absolute;
float:right;
}
#col-7 h4{
color: white;
text-align: left;
}
#col-7 h3{
color:white;
text-align:left;
margin-top:-10px;
}
#col-7 p{
color:white;
text-align: left;
}
#btn-7{
background-color:#30CFCA;
color:white;
float:left;
margin-top: 10%;
margin-bottom: -6%;
display: block;
}
只获取您指定的确切类型的属性,搜索您正在调用GetCustomAttributes(..., true)
的成员的继承层次结构。它不会从您正在搜索的属性类型中获取继承的属性。
要获得GetCustomAttributes
,您需要致电HttpGetAttribute
。与GetCustomAttributes(typeof(HttpGetAttribute), true)
相同。
例如,如果您有一个操作方法HttpPostAttribute
从父控制器覆盖一个方法,并且父级Foo
有一个属性,则第二个参数会告诉Foo
是否要返回父母自定义属性。
答案 1 :(得分:1)
一年太晚了,但是如果你想得到HttpMethodAttribute:
var httpMethodAttr = (HttpMethodAttribute)action.GetCustomAttributes()
.SingleOrDefault(a => typeof(HttpMethodAttribute).IsAssignableFrom(a.GetType());
或者类型是你之后的类型
var httpMethodType = (from a in action.GetCustomAttributes()
let t = a.GetType()
where typeof(HttpMethodAttribute).IsAssignableFrom(t)
select t).SingleOrDefault();
if (httpMethodType = null || httpMethodType == typeof(HttpGetAttribute))