Controller
içine Bunu yapmanın çeşitli yolları vardır. İlk başta bilmelisiniz ki, denetleyiciye her istekte aynı denetleyicinin farklı örneğini kullanıyorsunuz.
İlk olarak: tekil kullanabilme. Herkese açık statik örnekte depolayın, bir kez yükleyin ve her sorduğunuzda aynı listeyi alın. Ancak, veritabanı değerleri olduğu için, veritabanından depolanan değerleri düzenli olarak güncellemeniz gerekir.
public class LoaderSingleton
{
private static readonly LoaderSingleton _instance = new LoaderSingleton();
private List<DataRow> _items;
static LoaderSingleton()
{
}
private LoaderSingleton()
{
}
public static LoaderSingleton Instance
{
get
{
return _instance;
}
}
public List<DataRow> Items
{
get
{
if (this._items == null)
{
this.Load();
}
return this._items;
}
}
public void Load()
{
this._items = //perform load from database
}
}
İkinci yolu: Bir Session
değişkeni kullanmak. Değerleri, statik sınıf yerine kullanıcı oturumunda depolayın. Değerleri güncellemeyi ve oturumu temizlemeyi unutmamalısınız.
//inside controller
this.Session[str_salesClass] = SalesRepository.SalesCount();
Üçüncü bir yol: ViewData
değişkeni kullanmak. Değer yalnızca talepler arasında saklanır ve son istek tamamlandıktan sonra yeni değerler ile güncellemeniz gerekir.
//inside controller
this.ViewData[str_salesClass] = SalesRepository.SalesCount();
Dördüncü yolu: En görünümden async
isteklerini gerçekleştirin. Örneğin, başka bir görüntüyü eşzamansız olarak yükleyebilen ve yük alt görünümü için istek gönderirken, temel görünüm için gerekli değerleri yüklüyorsunuz - yüklenen verileri parametre olarak iletmeniz gerekir. o öngörülemeyen davranışa sahip sebep
public ActionResult BaseView()
{
ViewBag.Data = SalesRepository.SalesCount();
return View();
}
[ChildActionOnly]
public ActionResult ChildView1(List<DataRow> sales)
{
}
Ben Cache
kullanmayı önermiyoruz. Ve beklemediğinizde null
'u alacaksınız.
kodunuzu şu ana kadar neler yaptığınızı görebilmemiz için – Theunis
@VadimMartynov, Teşekkürler Vadim, önbellek verileri hakkında fikir sahibi olabilirim, ancak senaryoda, önbellek verisini nasıl uygulayabilirim – ronibd