2012-09-28 48 views
1

我有部分视图,它接受客户对象并呈现html。对于客户列表,如何在服务器端合并部分视图的输出,类似于在视图中使用foreach循环呈现renderpartial。合并部分视图的输出

//how to write action method for below 
foreach(var item in customerslist) 
{ 
//get html by calling the parview 
outputhtml += //output from new _partialviewCustomer(item); 
} 

return outputhtml; 

回答

1

你可以使用下面的扩展方法渲染的部分转换为字符串:

public static class HtmlExtensions 
{ 
    public static string RenderPartialViewToString(this ControllerContext context, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
     { 
      viewName = context.RouteData.GetRequiredString("action"); 
     } 

     context.Controller.ViewData.Model = model; 

     using (var sw = new StringWriter()) 
     { 
      var viewResult = ViewEngines.Engines.FindPartialView(context, viewName); 
      var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 
} 

然后:

foreach(var item in customerslist) 
{ 
//get html by calling the parview 
outputhtml += ControllerContext.RenderPartialViewToString("~/Views/SomeController/_Customer.cshtml", item) 
} 

return outputhtml; 
+0

如果你得到机会,你可以请提供您对此的见解。我已经看到过很多验证帖子,但我不知道如何实现它。再次感谢..http://stackoverflow.com/questions/12613188/validate-only-ajax-loaded-partial-view/12615865#12615865 – Sunny