Click here to Skip to main content
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>
@using (Html.BeginForm())
{
    @Html.DropDownList("DepartmentID", (IEnumerable<SelectListItem>)ViewBag.DepartmentMaster)
   
   
}
 
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>
@using (Html.BeginForm())
{
    @Html.DropDownList("DepartmentID", Model.DepartmentMaster)
   
   
  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 280
1 Sergey Alexandrovich Kryukov 279
2 CPallini 205
3 Maciej Los 162
4 Afzaal Ahmad Zeeshan 160
0 OriginalGriff 5,635
1 DamithSL 4,496
2 Maciej Los 3,942
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,180


Advertise | Privacy | Mobile
Web03 | 2.8.141216.1 | Last Updated 12 Jan 2013
Copyright © CodeProject, 1999-2014
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