У меня есть собственный ActionFilterAttribute. Ради этого вопроса предположим, что это так:

public class CustomActionFilterAttribute : ActionFilterAttribute {
    public bool success { get; private set };

    public override void OnActionExecuting(HttpActionContext actionContext) {
        //Do something and set success
        success = DoSomething(actionContext);
    }
}

Затем мой контроллер украшен CustomActionFilter. Я ищу способ (в моем методе контроллера) сделать что-то вроде:

[CustomActionFilter]
public class MyController : ApiController {
    public ActionResult MyAction() {
        //How do I get the 'success' from my attribute?
    }
}

Если есть более приемлемый способ сделать это, пожалуйста, дайте мне знать.

5
Adam Modlin 14 Авг 2014 в 18:34
 – 
Justin Helgerson
14 Авг 2014 в 18:35
К сожалению, это не сработает для меня, потому что мой атрибут находится не в действии, а в контроллере.
 – 
Adam Modlin
14 Авг 2014 в 20:26
1
Подойдет ли это вам? stackoverflow.com/questions/2656189/…
 – 
Justin Helgerson
14 Авг 2014 в 20:34
Я полагаю, что это могло бы сработать, но я смог решить эту проблему в своем ответе ниже, прежде чем я увидел ваш ответ.
 – 
Adam Modlin
14 Авг 2014 в 21:09

1 ответ

Лучший ответ

Я обнаружил, что могу сделать следующее, чтобы решить свою проблему:

[CustomActionFilter]
public class MyController : ApiController {
    public ActionResult MyAction() {
        var myAttribute = ControllerContext
                          .ControllerDescriptor
                          .GetCustomAttributes<CustomActionFilter>()
                          .Single();
        var success = myAttribute.success;
    }
}
6
Adam Modlin 14 Авг 2014 в 21:08