从jquery向控制器发送POST请求时发生500内部服务器错误
控制器代码从jquery向控制器发送POST请求时发生500内部服务器错误,jquery,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,Jquery,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,控制器代码 public ActionResult SearchByUPC_Name(String keyword) { using (DbPOSEntities db = new DbPOSEntities()) { var CompanyID = ((UserModel)Session["User"]).CompanyID; var items = db.tblItems.Where(i => i.CompanyID == Company
public ActionResult SearchByUPC_Name(String keyword)
{
using (DbPOSEntities db = new DbPOSEntities())
{
var CompanyID = ((UserModel)Session["User"]).CompanyID;
var items = db.tblItems.Where(i => i.CompanyID == CompanyID
&& i.IsDeleted == false
&& (i.UPC == keyword || i.Name.Contains(keyword))).ToList();
return Json(new { Success = true, Items = items });
}
}
$.ajax({
url: "/Item/SearchByUPC_Name",
type: "POST",
async: true,
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "keyword": searchStr }),
dataType: "json",
success: function (response) {
debugger;
if (response.Success) {
console.log('ok');
}
else {
console.log('not ok');
}
},
error: function (err) {
alert(err.statusText);
}
});
Js代码
public ActionResult SearchByUPC_Name(String keyword)
{
using (DbPOSEntities db = new DbPOSEntities())
{
var CompanyID = ((UserModel)Session["User"]).CompanyID;
var items = db.tblItems.Where(i => i.CompanyID == CompanyID
&& i.IsDeleted == false
&& (i.UPC == keyword || i.Name.Contains(keyword))).ToList();
return Json(new { Success = true, Items = items });
}
}
$.ajax({
url: "/Item/SearchByUPC_Name",
type: "POST",
async: true,
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "keyword": searchStr }),
dataType: "json",
success: function (response) {
debugger;
if (response.Success) {
console.log('ok');
}
else {
console.log('not ok');
}
},
error: function (err) {
alert(err.statusText);
}
});
我收到此错误:500内部服务器错误:ObjectContext实例已被释放,无法再用于需要连接的操作。由于实体框架的延迟加载属性,您使用wrap的
可能会导致此错误。它在返回实体之前处理上下文
using (DbPOSEntities db = new DbPOSEntities())
{
var CompanyID = ((UserModel)Session["User"]).CompanyID;
var items = db.tblItems.Where(i => i.CompanyID == CompanyID
&& i.IsDeleted == false
&& (i.UPC == keyword || i.Name.Contains(keyword))).ToList();
return Json(new { Success = true, Items = items });
}
您可以使用
wrap删除,以使用快速加载来避免您面临的错误:
DbPOSEntities db = new DbPOSEntities();
var CompanyID = ((UserModel)Session["User"]).CompanyID;
var items = db.tblItems.Where(i => i.CompanyID == CompanyID
&& i.IsDeleted == false
&& (i.UPC == keyword || i.Name.Contains(keyword))).ToList();
return Json(new { Success = true, Items = items });
不要使用
将查询包装在中。有关详细说明,请参阅。