2014-09-29 38 views
0

我在做从下拉选择中,我用Json值填充文本框。 Action()方法工作正常它返回Json值,但页面不会将这些值填充到TextBoxes控件。当我使用开发人员工具,然后我得到,它会抛出一个错误“该操作无法完成,因为DbContext已被处置。”该操作无法完成,因为DbContext已在Mqsql和实体框架中处理

控制器

private hcEntities db = new hcEntities(); 

// GET: Chains 
public ActionResult Index() 
{ 
    ViewData["chain_name"] = new SelectList(db.chains, "code", "name"); 
    return View(db.chains.ToList()); 
} 

//Action Function callby javascript 
[HttpPost] 
public ActionResult Action(string code) 
{ 
    using (var ObjDb = new hcEntities()) 
    { 
     var query = from c in ObjDb.chains 
      where c.code == code 
      select c; 
     return Json(query);//Return Json Result 
    } 
} 

查看: -

<script type="text/javascript"> 
function Action(code) { 
$.ajax({ 
    url: '@Url.Action("Action", "Chains")', 
    type: "POST", 
    data: { "code": code }, 
    "success": function (data) { 
     if (data != null) { 
      var vdata = data; 
      $("#ChainName").val(vdata[0].name); 
      $("#ChainCode").val(vdata[0].code); 
      $("#username").val(vdata[0].username); 
     } 
    } 
}); 
} 
+0

尝试'返回Json(query.ToList());' – rene 2014-09-29 06:34:33

+0

我已经使用它得到异常“在EntityFramework.dll中发生类型'System.InvalidOperationException'的异常,但未在用户代码中处理” – Anjyr 2014-09-29 06:36:12

+0

只是为了测试,摆脱使用和重用您的类级别的dbcontext在这一行'var query = from db.chains' – rene 2014-09-29 06:44:09

回答

0

使用IDisposable再次在GET控制器:

// GET: Chains 
public ActionResult Index() 
{ 
    using (var ObjDb = new hcEntities()) 
    { 
     ViewData["chain_name"] = new SelectList(ObjDb.chains, "code", "name"); 
     return View(ObjDb.chains.ToList()); 
    } 

} 
1

尝试return Json(query.FirstOrDefault());