Как передать динамическую переменную в Action Filter в ASP.NET MVC - PullRequest
2 голосов
/ 16 декабря 2011

Я хотел бы использовать переменную для передачи динамического значения в мой фильтр действий.Я думал, что это будет что-то вроде этого:

[MessageActionFilter(message = "User is updating item: " & id)]
public ActionResult doSomething(int id)
{
    // do something
}

Однако, похоже, что параметр должен быть постоянным значением.Поэтому у меня вопрос, как мне получить переменную для моего фильтра действий?

1 Ответ

2 голосов
/ 16 декабря 2011

Вы можете получить значения параметров в OnActionExecuting, используя свойство ActionExecutingContext.ActionParameters .

Это просто псевдокод, но, например, вы можете получить параметр с именем id

public class MessageActionFilter: ActionFilterAttribute 
{     
    public override void OnActionExecuting(ActionExecutingContext filterContext)     
    {         
        var response = filterContext.HttpContext.Response;                   

        var parameterValue = filterContext.ActionParameters.SingleOrDefault(p => p.Key == "id");

        // check if not null before writing a message

        response.Write(this.Message + parameterValue); // prints "User is updating item: <idvalue>"
    }

    public string Message {get; set;}
} 

Скажите, поможет ли это.

...