Tôi đang cố gắng tạo lại hầu hết các chức năng của bộ lọc hành động OutputCache trong MVC 4 bằng cách lưu vào bộ nhớ cache các đối tượng kết quả xem bản thân mình. Lý do tôi không muốn sử dụng bộ lọc hành động OutputCache là vì tôi không thể sử dụng nó với khung nhìn AppFabric và một phần; xem một phần luôn được lưu trữ trong MemoryCache và tôi muốn các đối tượng được lưu trữ được sử dụng trên một trang trại máy chủ.Xem các chế độ xem MVC trong AppFabric theo cách thủ công
Vấn đề đầu tiên tôi có là
{"Type 'System.Web.Mvc.TempDataDictionary' cannot be serialized.
Consider marking it with the DataContractAttribute attribute, and marking all of
its members you want serialized with the DataMemberAttribute attribute.
If the type is a collection, consider marking it with the
CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for
other supported types."}
Điều này làm cho tôi tự hỏi, nếu tôi nên bộ nhớ cache cái gì khác để trả lại những gì cơ bản là quan điểm ở cuối. Có ai có một ý tưởng về những gì tôi nên bộ nhớ cache thay vì để tạo lại xem hoặc một cách tiếp cận khác nhau để bộ nhớ đệm một phần quan điểm trên một trang trại máy chủ? Tôi không muốn sử dụng plugin của bên thứ ba cho việc này.
Cảm ơn
Cập nhật: Tôi bắt đầu nhớ đệm chuỗi đại diện của quan điểm từng phần như sau:
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "ViewName");
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
view = sw.GetStringBuilder().ToString();
}
này đã làm cho nó dễ dàng để chỉ lấy các chuỗi trong bộ nhớ cache và gửi lại như nội dung trong hoạt động. Tôi vẫn đang tìm kiếm các đề xuất khác hoặc cách tốt hơn để thực hiện việc này.