2011-03-04 23 views
7

Birden çok sayfaya bir RenderPartial Önbelleğini Önbelleğe almanın mümkün olup olmadığını söyleyen var mı? Kullanıcı profilini güncellemediği sürece gerçekten değişmemesi gereken bir kullanıcı profili için bir RenderPartial var. Bu yüzden bir sayfaya geri döndüğümde profiline geri dönmek istemiyorum. Güncellemeye zorlanana kadar kısmi olarak geçmeyi tercih ederim (yani, profil güncellemesi)MVC3 RenderBir sayfadan fazla önbellekleme önbellekleme

p.haack'in bir araya getirildiği DonutHole örneğine baktım, ancak tek bir sayfa için uygun görünmektedir. Birisi bana doğru yönde işaret edebilir veya herhangi bir tavsiyede bulunabilir mi? Yoksa her seferinde bir sayfayı önbelleğe alabilir miyim? Teşekkürler!

cevap

11

Bunun yerine RenderAction'ı kullanabilirsiniz. Örnek:

<div> 
    @{Html.RenderAction("Cached");} 
</div> 

ve her iki sayfa bunun önbelleğe alınmış sürümünü alacak:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 

    [OutputCache(Duration = 6000, VaryByParam = "none")] 
    public ActionResult Cached() 
    { 
     // You could return whatever you want here, even a view 
     // but for the purpose of the demonstration I am simply 
     // returning a dynamic string value 
     return Content(DateTime.Now.ToLongTimeString(), "text/html"); 
    } 
} 

ve çocuk eylemini içerebilir Index.cshtml ve About.cshtml görünümleri iç

.

+0

Teşekkür ederim Darin. Bu mükemmeldi. iade yerine İçerik döndürdüm PartialView (object); notlarında belirttiğin gibi. –

+0

Darin, bir kısmi görünümle kullanıldığında bir önbellek profili kullanmak için OutputCache almanın bir yolunu biliyor musunuz? –

+1

@Mark Good, hayır bu desteklenmiyor. Sorunu açıklayan aşağıdaki makaleye göz atabilirsiniz: http://www.dotnetcurry.com/ShowArticle.aspx?ID=665. Düzeltmek için özel bir eylem filtresi yazabilirsiniz. –

İlgili konular