3

のインスタンスからアクション結果タイプ(、、など)を取得することは可能ViewResultですか? JsonResultControllerContext

4

1 に答える 1

7

いいえ、それは不可能です。コントローラーは、どの ActionResults よりもはるかに早く実行されます。しかし、ActionFilter を作成している場合はfilterContext、Result プロパティを使用してその情報を取得できます。

例えば:

public class MyGlobalActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var result = filterContext.Result;
        if (result is ViewResultBase)
        {
            // the controller action returned a view result 
            // (either a ViewResult or PartialViewResult)
        }
        else if (result is JsonResult)
        {
            // the controller action returned a JSON result
        }
        else if (result is RedirectToRouteResult)
        {
            // the controller action redirected
        }
        .... and so on
    }
}

これは、コントローラー アクションの実行が終了した後、つまりとの内部OnActionExecutedでのみ意味があることに注意してください。このアクションの実行が完了する前に、コントローラー アクションが返した結果を検証しようとしても意味がありません。OnResultExecutingOnResultExecuted

于 2013-02-06T16:05:08.170 に答える