9

Web サイトのユーザーにアクセス権を与えなければなりません。ここでフィルタリングを行っています:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
}

問題は、'Index' などの完全なビュー リクエストを PartialViewRequests または AJAX 呼び出しリクエストと区別できないことです。

したがって、ページ'Index'にはアクセス権がありますが、にはアクセス権があり'PartialViewGridViewForIndex'ません。

プロパティControllerContext.IsChildActionも役に立ちません。

4

3 に答える 3

32

IsAjaxRequest拡張メソッドを使用して、このコントローラーアクションを呼び出すためにAJAXリクエストが使用されたかどうかを判断できます。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.HttpContext.Request.IsAjaxRequest())
    {
        // the controller action was invoked with an AJAX request
    }
}
于 2012-10-15T08:58:05.177 に答える
0

を拡張して Authorization フィルターを作成しますAuthorizeAttribute。次に、コードをOnAuthorizeオーバーライドに入れます。FilterContextオブジェクトで見ることができますFilterContext.ActionDescriptor.MethodInfo.ReturnType.Name。部分ビューの場合、これは になりますPartialViewResult

于 2014-09-15T13:39:13.583 に答える