How does the Html Helper, RenderPartial, work? How can I implement a helper that can bring in content from a partial view?

The RenderPartial extensions are programmed to render directly to the Response object... you can see this in the source code for them:

....).Render(viewContext, this.ViewContext.HttpContext.Response.Output);

This means that if you change your approach a little bit, you can probably accomplish what you want. Rather than appending everything to a StringBuilder, you could do something like this:

using System.Web.Mvc.Html;

public static class WindowHelper
{
    public static void Window(this HtmlHelper helper, string name, string viewName)
    {
        var response = helper.ViewContext.HttpContext.Response;
        response.Write("<div id='" + name + "_Window' class='window'>");

        //Add the contents of the partial view to the string builder.
        helper.RenderPartial(viewName);

        response.Write("</div>");
    }
}

Note that including System.Web.Mvc.Html allows you access to the RenderPartial() methods.


We are fixing this in MVC 2. You will be able to call Html.Partial() and get the actual contents of the view as a string.