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
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);
}
}