MVC Просмотр вывода HTML в JSON - PullRequest
       3

MVC Просмотр вывода HTML в JSON

1 голос
/ 03 сентября 2010

Возможно, об этом уже много раз спрашивали, но я не могу найти ответ где.

У меня есть действие

public ActionResult SearchResult()
{
   return View();
}

Теперь мне также нужны некоторые данные, которыесвязанных с View, поэтому я пытаюсь сделать следующее

public JsonResult SearchResult()
{
   var result = new JsonResult();

   result.Data = new { Data = x, Html = "Here i need html generated from view" }

   return result;
}

Как я могу получить html, сгенерированный из моего представления? Я также могу преобразовать его в элемент управления, если требуется.

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

В таком случае я использую расширение класса Controller, вдохновленное статьей http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/

public static class ControllerHelper
{
    public static string RenderPartialViewToString(this Controller controller, 
        string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = controller.ControllerContext.RouteData.
                GetRequiredString("action");

        controller.ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.
                FindPartialView(controller.ControllerContext, viewName);
            ViewContext viewContext = 
                new ViewContext(controller.ControllerContext, viewResult.View, 
                    controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }
}
0 голосов
/ 03 сентября 2010

Какие данные вам нужны конкретно?Теоретически, я бы подумал, что большая часть данных, которые вы хотели бы получить, была бы получена из вашей Модели и, таким образом, доступна в действии Controller.

Если вам нужен блок HTML, возможно, извлеките его генерацию вметод, который вы можете вызвать как в своем представлении, так и в действии контроллера.Это может принять форму HtmlHelper, если в выведенном HTML используются значения из модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...