Click here to Skip to main content
12,754,090 members (27,096 online)
Rate this:
 
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 5: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
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web01 | 2.8.170217.1 | Last Updated 12 Jan 2013
Copyright © CodeProject, 1999-2017
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