C# 在视图中使用HTML.action时出现MVC HTML压缩筛选器异常
代码取自 当在主视图中使用Html.action呈现局部视图时,它会在response.Filter上为我提供值不能为null的异常 滤器 看法 例外情况 Response.Filter=值不能为null 当我注释掉时,过滤器工作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("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);
}
}
}
}