【发布时间】:2016-03-03 14:51:39
【问题描述】:
代码取自Codeproject。
当在 主视图 中使用 Html.action 来呈现 局部视图 时,它给我的值在 response.Filter 上不能为空异常。
过滤器
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CompressAttribute());
}
}
public class CompressAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(encodingsAccepted)) return;
encodingsAccepted = encodingsAccepted.ToLowerInvariant();
var response = filterContext.HttpContext.Response;
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);
}
}
}
查看
<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);
Response.Filter = 值不能为空
当我注释掉时过滤器起作用
@Html.Action("GetAccountCompanies", "Account")
【问题讨论】:
标签: c# html asp.net .net asp.net-mvc