Click here to Skip to main content
11,705,762 members (42,937 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# ASP.NET MVC MVC3
Hello,

I am new in MVC.
I am trying to bind the dropdownlist. But its giving me the following error:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
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 :

@model MvcApplication4.Models.DepartmentMaster
 
@{
    ViewBag.Title = "GetAllDepartment";
}
 
<h2>GetAllDepartment</h2>

can you please help me where is the problem in my code?
Posted 11-Jan-13 4:27am
VIPR@T2.8K
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

You could make a list of departments to avoid the disposed context.
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();
        }
  Permalink  
v2
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

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
public Class MyModel
{
    public SelectListItem DepartmentMaster { get; set; }
}


Controller

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

@model MvcApplication4.Models.DepartmentMaster
 
@{
    ViewBag.Title = "GetAllDepartment";
}
 
<h2>GetAllDepartment</h2>
  Permalink  

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

  Print Answers RSS
0 OriginalGriff 213
1 Sergey Alexandrovich Kryukov 170
2 Inimicos 60
3 ProgramFOX 50
4 F-ES Sitecore 45
0 OriginalGriff 9,037
1 Sergey Alexandrovich Kryukov 8,417
2 CPallini 5,189
3 Maciej Los 4,726
4 Mika Wendelius 3,626


Advertise | Privacy | Mobile
Web03 | 2.8.150819.1 | Last Updated 12 Jan 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100