تا %60 تخفیف خرید برای 4 نفر با صدور مدرک فقط تا
00 00 00
iran58

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

سلام

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

باتشکر

لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

سلام و درود

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

راه حل 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] در بالای اکشنی که جهت تغذیه مقادیر برای کومبو است استفاده کنید و آن اکشن (کش شده) را در اکشنی که ویوی شما استفاده می کند فراخوانی نموده (مثلا با یک ویوبگ) و به ویو پاس دهید

مجید محمدی سامانی
iran58

سلام

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

سلام

چون دیتای ثابت دارید بهترین گزینه استفاده از راه حل های 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" })
مجید محمدی سامانی
پاسخ شما
برای ارسال پاسخ خود وارد شوید.