65.9K
CodeProject is changing. Read more.
Home

MVC Extension: MinifiedPartial

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Jul 12, 2012

CPOL
viewsIcon

10517

An extension for minimizing HTML output from a partial view

Introduction

I use partial views a lot in my razor views. And I do care about optimizing my HTML. So I created an extension to HTML-optimize my partial views and thought I'd share it with you.

Using the Code

Use it just as you use @Html.Partial().

@Html.MinifiedPartial("MyPartialView")

The Extension Method

// code
public static class MvcExtensions
{
    private static readonly Regex RegexBetweenTags = new Regex(@">(?! )\s+", RegexOptions.Compiled);
    private static readonly Regex RegexLineBreaks = 
    	new Regex(@"([\n\s])+?(?<= {2,})<", RegexOptions.Compiled);

    public static MvcHtmlString MinifiedPartial(this HtmlHelper htmlHelper, string partialViewName)
    {
        var partialViewContent = htmlHelper.Partial(partialViewName).ToHtmlString();

        partialViewContent = RegexBetweenTags.Replace(partialViewContent, ">");
        partialViewContent = RegexLineBreaks.Replace(partialViewContent, "<");

        return new MvcHtmlString(partialViewContent);
    }

    public static MvcHtmlString MinifiedPartial
    	(this HtmlHelper htmlHelper, string partialViewName, object model)
    {
        var partialViewContent = htmlHelper.Partial(partialViewName, model).ToHtmlString();

        partialViewContent = RegexBetweenTags.Replace(partialViewContent, ">");
        partialViewContent = RegexLineBreaks.Replace(partialViewContent, "<");

        return new MvcHtmlString(partialViewContent);
    }
}