Thursday, 5 May 2016

Bind Dropdownlist to model in MVC

No comments
CSHTML - 

 @Html.DropDownListFor(m => m.drugid, Model.DrugList, "Select Drug", new { @class = "chosen-select" })


GenericSelectListItems class to bind data anywhere - 

    public class GenericSelectListItems
    {
        private static GenericSelectListItems _GenericSelectListItems = new GenericSelectListItems();
        UnitOfWork uom = new UnitOfWork();

        public GenericSelectListItems()
        {

        }

        public static GenericSelectListItems Instance
        {
            get
            {
                return _GenericSelectListItems;
            }
        }

        public List<SelectListItem> GetDrugs()
        {
            var drugRepository = uom.Repository<DrugRepository>();
            var drugDataList = drugRepository.GetAllDrugs();
            return drugDataList.Select(d => new SelectListItem
            {
                Value=d.drugid.ToString(),
                Text=d.drugname
            }).ToList();
        }

    }


Controller - 

 public class DrugsController : Controller
    {
        UnitOfWork uow = new UnitOfWork();
        public ActionResult IncomingDrugs()
        {
            DrugInModels drugInModels = new DrugInModels();
            BindDropDown(drugInModels);
            return View(drugInModels);
        }

        public void BindDropDown(DrugInModels drugInModels)
        {
            drugInModels.DrugList = GenericSelectListItems.Instance.GetDrugs();
        }
    }