2014-09-29 64 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());

相關問題