2010-04-15 30 views
7

Tôi muốn sử dụng giá trị Enum cho các loại thông số VaryByCustom mà tôi sẽ hỗ trợ, có thể thực hiện điều này không?Đặt bộ nhớ cache đầu ra của trang VaryByTùy chỉnh giá trị theo chương trình

Tôi đã cố gắng đặt nó trong trang đó

<%@ OutputCache Duration="600" VaryByParam="none" 
      VaryByCustom='<%=VaryByCustomType.IsAuthenticated.ToString(); %>' %> 

Nhưng điều này trả lại toàn bộ chuỗi chữ "<%=VaryByCustomType.IsAuthenticated.ToString(); %>" bên global.asax của tôi là có cách nào để làm điều này, hoặc trên trang riêng của mình hoặc từ codebehind? Hay đây chỉ là thứ mà tôi phải chấp nhận là hoàn toàn là chuỗi phép thuật và không có gì tôi có thể làm để thêm an toàn cho nó?

Trả lời

8

Thay vì sử dụng chỉ thị @Outputcache, hãy thử thực hiện với mã trong trang. ví dụ.

void Page_Init() { 
    var outputCacheSettings = new OutputCacheParameters() { 
     Duration = 600, 
     VaryByCustom = VaryByCustomType.IsAuthenticated.ToString() 
    }; 
    InitOutputCache(outputCacheSettings); 
} 
+0

Điều này có vẻ như câu trả lời tôi đang tìm kiếm tuy nhiên xem http://msdn.microsoft.com/en-us/library/ms153473.aspx nó có dưới nhận xét không sử dụng phương pháp này, bất kỳ cơ hội để bạn có bất kỳ kiến ​​thức về lý do tại sao MSDN sẽ nói rằng vẫn còn phơi bày phương pháp này? Hoặc những gì có liên quan đến nó phải tự gọi nó? –

+0

Thành thật mà nói, đây là tài liệu lỗi thời có niên đại từ 2.0 ngày và không bao giờ được cập nhật. Đây thực sự là cuộc gọi được tạo ra cho bạn khi bạn sử dụng chỉ thị. Thay vào đó, bạn cũng có thể sử dụng kỹ thuật được mô tả trong chủ đề này: http://stackoverflow.com/questions/1043112/programatically-control-output-caching-disable-or-enable-cache-according-to-par –

+0

Cảm ơn rất nhiều David! –

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