Controllerdan PartialView’ı render ile çalıştırıp html text’ini alma

protected string RenderPartialViewToString(string viewName, object model)
{
    if (string.IsNullOrEmpty(viewName))
    viewName = ControllerContext.RouteData.GetRequiredString("action");
    ViewData.Model = model;
    using (StringWriter sw = new StringWriter())
    {
        ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.GetStringBuilder().ToString();
    }
}

Html.Partial ve Html.RenderPartial arasındaki fark nedir?

Html.Partial
Partial metotu, herhangi bir Partial View’i veya Normal View’i bir string içerisine render eder. Birden
çok farklı View içinden render etmek istediğiniz partial view gibi render edebilirsiniz. Index sayfası
içerisinde Footer Action’i açıyoruz
Kullanımı:
@Html.Partial(“Footer”)

aspnet_mvc3_partial

Html.RenderPartial
RenderPartial, Render’e benzemektedir. Fakat RenderPartial’i doğrudan string döndürmek yerine
yanıtı yazar. Kullanım olarak kod blokları arasında yazmanız gerekiyor. Aşağıdaki iki kullanımında
çıktısı aynıdır:
@{Html.RenderPartial(“Footer”); }
@Html.Partial(“Footer”)
Peki Partial’i mi yoksa RenderPartial’i mi kullanmam gerekiyor?
Genel olarak, Partial‘i RenderPartial‘a tercih etmenizi tavsiye ediyorum. Çünkü Partial, ek olarak kod
blokları yazıpta içerisinde kullanmadığımız için daha kullanışlıdır. Fakat RenderPartial, doğrudan gelen
yanıtı yazdığı için daha performanslıdır.