2009-05-15 19 views
5

Tất cả các ví dụ cho donut bộ nhớ đệm Tôi đã nhìn thấy chỉ là như thế này:Làm thế nào để 'bộ nhớ cache donut' trong ASP.NET MVC cho một cái gì đó hơn một ngày

<%= Html.Substitute(c => DateTime.Now.ToString())%> 

Thats tốt nếu tôi chỉ muốn ngày, nhưng các tùy chọn khác là gì?

Tôi biết có một đại biểu 'MvcSubstitutionCallback' trong đó có chữ ký sau đây:

public delegate string MvcSubstitutionCallback(HttpContextBase httpContext); 

nhưng RenderActionRenderPartial trả về void vì vậy tôi không thể chỉ trả lại từ phương pháp đại biểu. Làm thế nào tôi có thể sử dụng hiệu quả gọi lại này cho các tình huống phức tạp hơn.

Tôi đã xem cả hai bài viết của Phil Haacked herehere, nhưng dường như không làm chính xác những gì tôi muốn.

+0

Bất kỳ bản cập nhật về vấn đề này? Bạn có trình trợ giúp html hoạt động ngay bây giờ không? –

+0

bạn đợi bốn tháng và sau đó là hai nhận xét cùng một lúc. Tôi cũng quan tâm đến điều này, sẽ đăng lại mọi phát hiện. Đoán chúng tôi sẽ cần một gói trợ giúp mới xung quanh html.ViewContext.HttpContext.Response.WriteSubstitution – dove

+0

@robert khi tôi thêm xác thực vào các trang của tôi vừa mở ra một hộp sâu và cuối cùng tôi đã tắt bộ nhớ đệm trong toàn bộ trang web của mình. phải ưu tiên những thứ khác. Tôi sẽ chờ đợi một phản ứng chính thức tốt hơn –

Trả lời

3

"Donut Caching" có nghĩa là sử dụng phương thức Response.WriteSubstitution. Nếu bạn nhìn vào nguồn MVC, bạn sẽ thấy rằng System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial phương pháp đang sử dụng Response.Output (HtmlHelper.cs, dòng 277 - dòng cuối cùng trong 'RenderPartialInternal' phương pháp) - vì vậy bạn cần tạo của riêng bạn người trợ giúp html để xử lý các tình huống phức tạp hơn.

Các vấn đề liên quan