Render PartialView to String - ASP.NET MVC

четверг, 7 января 2010, Bobasoft

Недавно была задача, отрендерить PartialView в строку, чтобы потом ее передать как параметр в ответ на ajax запрос... в интернете нашел пару примеров, но если в partialView использовались html или ajax хелперы, рендеринг крешался... поэтому решил написать свой код. Большое спасибо за помощь программе Reflector - что помогла мне понять как решить эту задачу))))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static class HtmlHelperExtensions
{
    public static string RenderPartialToString(ControllerContext context, string partialViewName, ViewDataDictionary viewData, TempDataDictionary tempData)
    {                      
        ViewEngineResult result = ViewEngines.Engines.FindPartialView(context, partialViewName);
 
        if (result.View != null)
        {
            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter output = new HtmlTextWriter(sw))
                {
                    ViewContext viewContext = new ViewContext(context, result.View, viewData, tempData, output);
                    result.View.Render(viewContext, output);
                }
            }
 
            return sb.ToString();
        }
 
        return String.Empty;
    }
}

теперь вызовем этот метод из контроллера:

1
2
object modelForPartialView = new { Value = "Value" };
string partialViewHtml = HtmlHelperExtensions.RenderPartialToString(this.ControllerContext, "PartialViewName", new ViewDataDictionary(modelForPartialView), new TempDataDictionary());

WBR,

Bobasoft )))


Ищите нас в интернетах!

Комментарии

Свежие вакансии