MVC在json中查看html输出

时间:2010-09-02 20:54:49

标签: asp.net-mvc asp.net-mvc-2

之前可能已经多次问过这个问题,但我无法在任何地方找到答案。

我有一个动作

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 个答案:

答案 0 :(得分:1)

我是这样的,我使用受文章http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/

启发的Controller类扩展
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();
        }
    }
}

答案 1 :(得分:0)

您需要具体哪些数据?从理论上讲,我认为你想要的大多数数据都来自你的模型,因此可以在Controller动作中访问。

如果它是您需要的HTML块,可能将它的生成提取到您可以在视图和控制器操作中调用的方法。如果输出的HTML使用模型中的值,则可以采用HtmlHelper的形式。