2013-08-20 37 views

回答

30

当然,将以下方法放在共享控制器或助手类中。它会返回HTML渲染视图,使用自explainatory:

public static string RenderViewToString(ControllerContext context, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = context.RouteData.GetRequiredString("action"); 

     var viewData = new ViewDataDictionary(model); 

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

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

你真棒天才男人! :) –

+0

@Leo Nix我应该如何创建上下文参数?我试图初始化一个实例,但我不知道它的构造函数的ControllerBase参数。 – Hosein

+0

如果您在上下文中使用控制器操作,则不需要创建一个:ControllerContext是控制器的属性,因此只需将其传入。https://goo.gl/pp5AkR –

6

我不知道这是否是最好的做法或没有,但如果u离开它,因为它是

return PartialView("_Product", model) 

然后你叫这个方法用阿贾克斯

$.ajax ({ 
    type: "POST", 
     url: _url, 
     data: _data, 
     success: function (result) { 
      // the result is the returned html from the partial view 
     } 
})