确定ASP.NET MVC 3中的请求是否为PartialView或AJAX请求

Dra*_*lut 9 c# asp.net httprequest asp.net-mvc-3

我必须为网站用户提供访问权限.我在这里做过滤:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
}
Run Code Online (Sandbox Code Playgroud)

问题是我无法区分完整的View请求,例如'Index'与PartialViewRequests或AJAX调用请求.

因此页面'Index'具有访问权限但'PartialViewGridViewForIndex'无权访问.

该物业ControllerContext.IsChildAction也没有帮助.

Dar*_*rov 32

您可以使用IsAjaxRequest扩展方法来确定是否使用AJAX请求来调用此控制器操作:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.HttpContext.Request.IsAjaxRequest())
    {
        // the controller action was invoked with an AJAX request
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在ASP.NET MVC中没有像PartialViewRequest这样的概念.控制器动作可能会返回一个`PartialViewResult`或一个普通的`ViewResult`.如果您需要知道控制器操作是否返回部分视图,则无法在`OnActionExecuting`方法中执行此操作,因为此方法在**控制器操作运行之前运行**.您可以在`OnActionExecuted`方法中执行此操作,您可以在其中检查`filterContext.Result`的具体类型.例如`if(filterContext.Result是PartialViewResult){...}`. (5认同)