之前可能已经多次问过这个问题,但我无法在任何地方找到答案。
我有一个动作
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?如果需要,我也可以将其转换为控件。
答案 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的形式。