MVC последний шанс изменить ответ, прежде чем он будет предоставлен пользователю - PullRequest
3 голосов
/ 01 февраля 2010

Мне нужно изменить полный поток ответа html (с разбором html), прежде чем он будет отображен пользователю. Где / когда последний шанс сделать это?

Ответы [ 2 ]

5 голосов
/ 01 февраля 2010

ИМХО, лучший способ изменить ответ HTML в среде ASP.NET MVC - это использовать фильтры действий. Это пример фильтра действий для сжатия вывода:

public class CompressFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;

        string acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding)) return;

        acceptEncoding = acceptEncoding.ToUpperInvariant();

        HttpResponseBase response = filterContext.HttpContext.Response;

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

Вы можете использовать это в своих методах действий:

    [CompressFilter]
    // Minifies, compresses JavaScript files and stores the response in client (browser) cache for a day
    public JavaScriptResult GetJavaScript(string jsPath)

НТН

2 голосов
/ 01 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...