Click here to Skip to main content
15,867,835 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
Hello,

I am new in MVC.
I am trying to bind the dropdownlist. But its giving me the following error:
C#
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

C#
My Controller code is as follow :

public ActionResult GetAllDepartment()
        {
            using (var db = new TestEntities())
            {
                IEnumerable<SelectListItem> items = db.DepartmentMasters.Select(c => new SelectListItem
                {
                    Value = c.DepartmentID.ToString(),
                    Text = c.DepartmentName
                });
                ViewBag.DepartmentMaster = items;
               
               return View();
            }
            
        }


View code is as follow :

C#
@model MvcApplication4.Models.DepartmentMaster

@{
    ViewBag.Title = "GetAllDepartment";
}

<h2>GetAllDepartment</h2>
@using (Html.BeginForm())
{
    @Html.DropDownList("DepartmentID", (IEnumerable<SelectListItem>)ViewBag.DepartmentMaster)
   
   
}


can you please help me where is the problem in my code?
Posted

You could make a list of departments to avoid the disposed context.
C#
using (var db = new TestEntities())
         {


         List<department> DepList = db.DepartmentMaster.AsEnumerable<department>().ToList();
         IEnumerable<SelectListItem> items = DepList.Select(c => new SelectListItem
            {
                Value = c.DepartmentID.ToString(),
                Text = c.DepartmentName
            });

         ViewBag.DepartmentMaster = items;



         return View();
        }
 
Share this answer
 
v2
It looks like you are getting the disposed error because its wrapped inside of a using statement and you are passing the value through the ViewBag. You should really create a model for this and pass it using the model to the view.

Model
C#
public Class MyModel
{
    public SelectListItem DepartmentMaster { get; set; }
}



Controller

C#
public ActionResult GetAllDepartment()
        {
            using (var db = new TestEntities())
            {
                MyModel model = new Model();
                IEnumerable<SelectListItem> items = db.DepartmentMasters.Select(c => new SelectListItem
                {
                    Value = c.DepartmentID.ToString(),
                    Text = c.DepartmentName
                });
                model.DepartmentMaster = items;
               
               return View(model);
            }
            
        }


Model

C#
@model MvcApplication4.Models.DepartmentMaster
 
@{
    ViewBag.Title = "GetAllDepartment";
}
 
<h2>GetAllDepartment</h2>
@using (Html.BeginForm())
{
    @Html.DropDownList("DepartmentID", Model.DepartmentMaster)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900