2016-04-11 15 views
4

Kayıtlı kullanıcının profiline göre bir menü listesi oluşturmam gereken bir proje üzerinde çalışıyorum. Ancak, şu anda sayfa her yüklendiğinde bu listeyi oluşturmam gerekiyor ve bu benim projem için çok iyi değil.Oturum yerine ne kullanmalıyım?

Yapmak istediğim, bu listeyi yalnızca kullanıcı oturum açtığında ve her ihtiyaç duyduğunda kullanıyorum. Fikrim, kullanıcı giriş yaptığında bu listeyi Session'da saklıyor. Ancak oturumun iyi bir uygulama olmadığını biliyorum.

ActionResult oturumunu, cookie ve OutputCache kullanmayı denedim, ancak yalnızca oturum çalışır.

böyle bir "küresel değişkeni", falan listemi saklamak ve bunu her zaman ihtiyaç kullanmak için bir yolu var mı?

+0

Bu, "Oturumun" tam olarak budur. – SLaks

+6

Oturumun kullanılması her durumda mutlaka yanlış değildir, ancak yanlış kullanılabilir. Bu durum seansın gerçekten amaçlandığı gibi geliyor, bu yüzden kullanın. – DLeh

+0

Ayrıca bir çerez kullanabilirsiniz ... eğer menüde çerez yok ve onu yeniden oluşturun. – JonH

cevap

1

G/değişti (olabilir bir JSON dize kadar basit bir şeyi?) Profilleri oluşturulduğunda inşa listesini depolamak üzere bir veritabanını yaratacak kullanıcı kimliği tarafından başvurulan.

Basitçe sonra tek bir kullanıcı kimliği değeri ile bu seçme bir olgu - Basit bir veri türü karmaşık veri türü alabilirsiniz.

+0

Menülerimi depolamak için zaten bir tablo oluşturdum. Ama şu anda her bir menüye bu menüyü veritabanından (SQL Server) almak zorundayım ve bunu yapmak istemiyorum. –

+0

Maalesef, tekrar girişte oturum açmada oturum açın ve bu oturum açma oturumunda sayfalarda sunun. Yani, OTURUM, tam olarak kullanmanız gereken şey. – Datadimension

2

Sorununuz için iki seçenek önerebilirim. Her kullanıcı için

  1. kullanımı Oturum nesnesi. veya
  2. Kullanım önbelleğe alma mekanizması - Eğer size uygulamada bazı önbelleğe alma mekanizması hayata varsa, (REDIS, AppFabric veya .NET önbelleğe alma gibi bir şey) navigasyon menüsü depolamak tek kullanıcı başına bir nesne oluşturabilirsiniz.

Menü ile ilgili nesne, kullanıcı için yalnızca bir kez oluşturulmalıdır (giriş sırasında bunu oluşturabilirsiniz).

0

Yardımlarınız için teşekkürler.

Ben Oturumunu kullanmak zorunda kaldı, benim sorunu çözmek için. Niye ya? Her kullanıcının kendine özgü menüleri, adı, kimlikleri ve avatarlarını içeren kendi '(SidebarViewModel) Oturumu ["kenar çubuğu"]' olduğu için.

"OutputCache" (Kendi öznitelik sınıfım) kullanmayı denedim, ancak menüm olarak ChildAction olarak önbelleğimi önbelleğimden temizleyemedim ve kendisinin değiştirebileceği kullanıcı için çok iyi değil avatar istediği zaman. Aynı zamanda uygulamayı kullanmaya çalıştım ama neredeyse aynı durumdaydı.

Not: Oturumlardan hoşlanmıyorum, ama şimdilik bunun en iyi yolu olduğunu düşünüyorum.

İlgili konular