Tôi gặp sự cố với Chế độ xem một phần được lưu trong bộ nhớ cache khi không được. Chế độ xem một phần này được sử dụng để hiển thị Logon/Logoff trên một trang. Nó sử dụng mã đơn giản dưới đây để tìm ra những liên kết để hiển thịVô hiệu hóa bộ nhớ đệm trên một chế độ xem một phần trong MVC 3
@if(Request.IsAuthenticated) {
<a href="@Url.Action("LogOff", "Account", new { area = "" })">Log Off</a>
}
else {
<a href="@Url.Action("LogOn", "Account", new { area = "" })">Log On</a>
}
phần Xem này được gọi là từ với tất cả các trang trong ứng dụng MVC3 của tôi, sử dụng
@Html.Partial("_HeaderView")
Trong hầu hết các bộ điều khiển của tôi, tôi có bộ nhớ cache đầu ra được xác định, vì vậy tôi có thể tận dụng bộ nhớ đệm của nội dung của mình.
[OutputCache(Duration = 86400, VaryByParam = "*")]
Vấn đề của tôi là toàn bộ trang đang được lưu vào bộ nhớ cache khi tôi không muốn xem một phần. Điều này gây ra hành vi sai, trong đó đôi khi hiển thị LogOff ngay cả khi người dùng không đăng nhập, vv Có cách nào để lưu trữ tất cả nội dung, ngoại trừ chế độ xem một phần được đề cập không?
Nick, xin lỗi đã phải thêm nhận xét tại đây. Nhưng dù sao, nó hoạt động khi tôi gỡ bỏ Nostore và thay đổi thời gian thành 1. Vấn đề duy nhất là khi người dùng đăng nhập, họ được đưa đến trang chủ nhưng tôi phải làm mới nó một cách rõ ràng để thay đổi có hiệu lực (hiển thị đăng xuất thay vì đăng nhập). – SimpleUser