2013-08-20 47 views

Trả lời

30

Tuyệt đối, đặt phương thức sau vào bộ điều khiển dùng chung hoặc lớp trợ giúp. Nó sẽ trả lại xem kết xuất trong HTML, cách sử dụng là tự 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

U là người thiên tài tuyệt vời! :) –

+0

@Leo Nix Tôi nên tạo đối số ngữ cảnh như thế nào? Tôi đã cố gắng để khởi tạo một thể hiện nhưng tôi không biết đối số ControllerBase của hàm tạo của nó. – Hosein

+0

bạn không cần phải tạo ra một nếu bạn sử dụng nó trong bối cảnh một hành động điều khiển: ControllerContext là một tài sản của bộ điều khiển vì vậy chỉ cần vượt qua nó trong. Https://goo.gl/pp5AkR –

6

tôi không biết nếu nó thực hành tốt nhất hay không, nhưng nếu u còn lại nó vì nó là

return PartialView("_Product", model) 

sau đó u được gọi là phương pháp sử dụng ajax

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