How to html encode the output of an NHaml view (or any MVC view)?

Posted by jessegavin on Stack Overflow See other posts from Stack Overflow or by jessegavin
Published on 2010-03-20T23:12:36Z Indexed on 2010/03/20 23:21 UTC
Read the original article Hit count: 362

I have several views written in NHaml that I would like to render as encoded html. Here's one.

%table.data
  %thead
    %tr
      %th Country Name
      %th ISO 2
      %th ISO 3
      %th ISO #
  %tbody
    - foreach(var c in ViewData.Model.Countries)
      %tr
        %td =c.Name
        %td =c.Alpha2
        %td =c.Alpha3
        %td =c.Number

I know that NHaml provides syntax to Html encode the output for given lines using &=. However, in order to encode the entire view, I would essentially lose the benefit of writing my view in NHaml since it would have to look like this....

&= "<table class='data'>
&= "  <thead>

So I was wondering if there was any cool way to be able to capture the rendered view as a string, then to html encode that string. Maybe something like the following???

public ContentResult HtmlTable(string format)
{
    var m = new CountryViewModel();
    m.Countries = _countryService.GetAll();

    // Somehow render the view and store it as a string?
    // Not sure how to achieve this.
    var viewHtml = View("HtmlTable", m); // ???
    return Content(viewHtml);
}

This question may actually have no particular relevance to the View engine that I am using I guess. Any help or thoughts would be appreciated.

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about nhaml