try this MVC v1.0 (an extension method that i use)
public static class Extensionmethods
{
    public static string RenderPartialToString(this Controller controller, string partialName)
    {
        return RenderPartialToString(controller, partialName, new object());
    }
    public static string RenderPartialToString(this Controller controller, string partialName, object model)
    {
        var vd = new ViewDataDictionary(controller.ViewData);
        var vp = new ViewPage
        {
            ViewData = vd,
            ViewContext = new ViewContext(),
            Url = new UrlHelper(controller.ControllerContext.RequestContext)
        };
        ViewEngineResult result = ViewEngines
                                  .Engines
                                  .FindPartialView(controller.ControllerContext, partialName);
        if (result.View == null)
        {
            throw new InvalidOperationException(
            string.Format("The partial view '{0}' could not be found", partialName));
        }
        var partialPath = ((WebFormView)result.View).ViewPath;
        vp.ViewData.Model = model;
        Control control = vp.LoadControl(partialPath);
        vp.Controls.Add(control);
        var sb = new StringBuilder();
        using (var sw = new StringWriter(sb))
        {
            using (var tw = new HtmlTextWriter(sw))
            {
                vp.RenderControl(tw);
            }
        }
        return sb.ToString();
    }
}
usage:
....
string htmlBlock = this.RenderPartialToString("YourPartialView", model);
return htmlBlock;
i use this in a ton of controllers with 100% success...
jim