تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

عدم اتصال چندین باره به بانک اطلاعاتی

سلام

وقتی می خواهم حالت وضیعت را در یک DropDownListFor نمایش بدهم در view های مختلف هربار مجبور به بانک اطلاعاتی متصل شوم و باتوجه به اینکه دادهای جدول مورد نظر همیشه ثابت هست (3داده وجود دارد)آیا راهی وجود دارد که اصلا به بانک متصل نشوم و یا حداقل وقتی برنامه توسط کاربر اجرا میشود از بانک خوانده شود

باتشکر

پرسیده شده در 1397/10/04 توسط

4 پاسخ

0

سلام و درود

چند راه حل دارید:

راه حل 1: مقدار دهی بصورت استاتیک

اگر فقط در یک ویو قرار است از آن استفاده کنید

@{
var list = new SelectList(new []
    {
        new {ID="1", Name="item1"},
        new {ID="2", Name="item2"},
        new {ID="3", Name="item3"},
        new {ID="4", Name="item4"},
    },
    "ID", "Name", 1);
}
@Html.DropDownList("list", list)

راه حل 2: مقدار دهی بصورت استاتیک

اگر می خواهید در چند ویو از آن استفاده کنید بهتر است کد فوق را در یک پارشیال ویو قرار دهید

راه حل 3: مقدار دهی بصورت داینامیک

می توانید از قابلیت اتریبیوت [OutputCache] در بالای اکشنی که جهت تغذیه مقادیر برای کومبو است استفاده کنید و آن اکشن (کش شده) را در اکشنی که ویوی شما استفاده می کند فراخوانی نموده (مثلا با یک ویوبگ) و به ویو پاس دهید

پاسخ در 1397/10/04 توسط
0

سلام

چون دیتای ثابت دارید بهترین گزینه استفاده از راه حل های 1 و 2 می باشد

ولی اگر می خواهید حتما از دیتابیس خوانده شود و Cache بشود این لینک را مشاهده نمایید یا از Ajax استفاده کنید ولی پیشنهاد نمی کنم برای همین راه حل 3 گفتم

راه حل ساده دیگه هم استفاده از یک متغیر و متد استاتیک است

// متغیر استاتیک
static System.Collections.Generic.List<Models.Person> lstCombo;

// متد استاتیک
        public static System.Collections.Generic.List<Models.Person> FixData()
        {
            if (lstCombo == null)
            {
                Models.DatabaseContext Db = new Models.DatabaseContext();
                lstCombo = Db.People.ToList();
            }
            return lstCombo;
        }


public System.Web.Mvc.ActionResult Create()
        {            
            ViewBag.ComboId =
                new System.Web.Mvc.SelectList
                (items: FixData(), dataValueField: "Id", dataTextField: "Name", selectedValue: null);

            return (View());
        }

در ویو هم

@Html.DropDownList("ComboId", null, htmlAttributes: new { @class = "form-control" })
پاسخ در 1397/10/05 توسط
3

با سلام. در چنین مواردی ، بهتر هست که داده های مربوطه که از دیتابیس فراخونی میشه رو بصورت cache نگهداری کنید .

مثلا در اجرای اولیه برنامه در یک متغییر Static ذخیره سازی رو صورت بدید یا بهتراز اون از یک سیستم cache مثل redis استفاده کنید و داده ها رو اونجا نگهداری کنید .



پاسخ در 1401/01/18 توسط
0

سلام

برای راه حل3 میشه یک مثال بنویسید

پاسخ در 1397/10/05 توسط

پاسخ شما