Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在视图中使用HTML.action时出现MVC HTML压缩筛选器异常_C#_Html_Asp.net_.net_Asp.net Mvc - Fatal编程技术网

C# 在视图中使用HTML.action时出现MVC HTML压缩筛选器异常

C# 在视图中使用HTML.action时出现MVC HTML压缩筛选器异常,c#,html,asp.net,.net,asp.net-mvc,C#,Html,Asp.net,.net,Asp.net Mvc,代码取自 当在主视图中使用Html.action呈现局部视图时,它会在response.Filter上为我提供值不能为null的异常 滤器 看法 例外情况 Response.Filter=值不能为null 当我注释掉时,过滤器工作 @Html.Action("GetAccountCompanies", "Account") 为每个操作调用CompressAttribute,因此我们需要确保不压缩childactions,(response.filter==null) <div>

代码取自

当在主视图中使用Html.action呈现局部视图时,它会在response.Filter上为我提供值不能为null的异常

滤器 看法 例外情况 Response.Filter=值不能为null

当我注释掉时,过滤器工作

@Html.Action("GetAccountCompanies", "Account")

为每个操作调用CompressAttribute,因此我们需要确保不压缩childactions,(response.filter==null)

<div>
   @Html.Action("GetAccountCompanies", "Account")
</div>
[HttpGet]
[ChildActionOnly]
public PartialViewResult GetAccountCompanies()
{
     return PartialView("~/Views/Shared/_AccountCompanies.cshtml");
}
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
@Html.Action("GetAccountCompanies", "Account")
public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var response = filterContext.HttpContext.Response;

        if (response.Filter != null)
        {
            var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
            if (string.IsNullOrEmpty(encodingsAccepted)) return;

            encodingsAccepted = encodingsAccepted.ToLowerInvariant();

            if (encodingsAccepted.Contains("deflate"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
            else if (encodingsAccepted.Contains("gzip"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
        }
    }
}