2

変数を使用して、動的な値をアクションフィルターに渡したいと思います。私はそれがこのようなものになるだろうと思いました:

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

ただし、パラメータは定数値でなければならないようです。したがって、私の質問は、変数をアクションフィルターに取得するにはどうすればよいですか?

4

1 に答える 1

3

ActionExecutingContext.ActionParametersプロパティを使用して、OnActionExecutingのパラメーター値を取得できます。

これは単なる擬似コードですが、たとえば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;}
} 

それが役立つかどうか教えてください。

于 2011-12-16T15:59:55.603 に答える