2011-12-13 18 views
10

Düzende tanımlanmış gezinme çubuğu olan bir sitem var. Gezinme çubuğu, sitenin çeşitli görünümlerinde kullanılır ve Veritabanındaki birkaç sorgudan oluşturulan bazı dinamik içeriğe sahiptir.ASP.NET MVC: Html.Partial veya Html.Action kullanın?

Bu menüyü oluşturmak için en iyi uygulamanın ne olduğunu merak ediyorum (kısmi görünümde tanımlanmıştır).

Bildiğim kadarıyla ben her biri için bazı avantajları ve dezavantajları ile, iki şekilde yapabiliriz bildiğimiz:

Html.Action kullanma: + Bu düzen kullanıyor görünümünden tamamen bağımsızdır - Sayfanın bir bölümünü oluşturmak için ek bir istek ekler - Ajax'dan çağrılmayan bir Kısmi görünüm döndüren bir Eylem yöntemi ekliyorum. Html.Partial kullanma

: + tüm görünüm işlemek için basit bir istek - Birkaç senaryolar beri Her görünüm modeli

Gerçekten bu üzerinde görüşlerini takdir ediyorum gezinme çubuğunda için gerekli bilgileri içermesi gerekir Sitemde bunu beğendim ve hangisinin en iyisi olduğundan emin değilim.

Teşekkürler!

cevap

14

Özellikle bu menü veri tabanından getirilen bazı dinamik veriler içeriyorsa Html.Action kullanırım. Bunun avantajı, bu getiriyi ana bilgisayardan tamamen ayrı bir eylemle tamamen ayrıştırabilmenizdir. Ayrıca, çocuk eylemlerinin çıktısı, [OutputCache] özniteliği ile dekore edilerek önbelleğe alınabilir. Bunu yaparak, veriler sık ​​sık değişmezse, veritabanınızdaki yükü azaltabilirsiniz.

O Bu konuda bir şey yanlış anlamış olmalı sayfa

bir bölümünü işlemek için ekstra bir isteği ekler. İstemciden ek bir talep yok. Her şey tek bir istekte sunulur. Ek bir denetleyici örneği ve eylem yürütme var, ancak istemciden yeni bir HTTP isteği değil. Aynı istekte 2 denetleyici eylemi yürütüldü ve sonuçları istemciye gönderilen tek bir HTML sayfasına toplanmış gibi.

+0

Yalnızca bir HTTP isteği yürüttüğü doğru olsa da, bir eylemi gerçekleştirmenin ek yükünün bir kısmi görüntü işleme düzeyini aştığı da doğrudur. –

+4

@NathanTaylor, bu doğru. Bir kısmi render etme oranını aşan bir yük vardır. Ama bu yük, sadece kabul etmemiz gereken çocuk eylemlerini kullanarak elde ettiğiniz tüm faydalara kıyasla çok az bir şekilde soooooooooooooooo. Demek istediğim, endişelerinizi ayırırsınız, temiz kod alırsınız, bu da performansın kısmi bir şekilde işlenmesini önleyecek şekilde önbelleğe alırsınız, yani, Html.Action'ı kullanın. –

+0

Kesinlikle katılmıyorum, sadece gerçekleri vurgulamaktayım. Html.Aksiyon FTW. –