我按照这个视频Youtube的说明进行操作
在我的控制器中:
public ActionResult loaddatacate()
{
BBDbModel context = new BBDbModel();
context.Configuration.ProxyCreationEnabled = false;
var data = context.Drinks_Category.ToList();
return Json(new { data = data }, JsonRequestBehavior.AllowGet);
}
在我看来:
<script type="text/javascript">
$(document).ready(function (e) {
$("#example1").DataTable({
"ajax": {
"url": "/Admin/AdminHome/loaddatacate",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "Id_category", "autowidth": true },
{ "data": "Name_category", "autowidth": true },
{ "data": "Parent", "autowidth": true }
]
});
var Parent = @Html.Raw(Json.Encode(ViewBag.Parent));
$(".parent").autocomplete({
source: Parent
});
});
数据库中的表"Drinks_category"有3列:Id_category,Name_category,父
错误是:
序列化类型为"WebApplication3.Models.Framework.Drinks_Category"的对象时检测到循环引用。
Drinks_Category类:
public partial class Drinks_Category
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Drinks_Category()
{
Drinks = new HashSet<Drink>();
Drinks_Category1 = new HashSet<Drinks_Category>();
}
[Key]
[StringLength(10)]
public string Id_category { get; set; }
[StringLength(20)]
public string Name_category { get; set; }
[Required]
[StringLength(10)]
public string Parent { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Drink> Drinks { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Drinks_Category> Drinks_Category1 { get; set; }
public virtual Drinks_Category Drinks_Category2 { get; set; }
}
请帮助我。谢谢!
据
我所知,当您尝试序列化例如一个类说类 class1 时,可能会引发这种错误,该类引用一个属性另一个类说 class2,反过来类 2 引用属性 class1。 循环引用是因为从类 1 转到类 2,从类 2 转到类 1
指示序列化程序忽略循环引用,如下所示:
var data = JsonConvert.SerializeObject(myList, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore});
并像这样返回它:
return Json(new { data = data }, JsonRequestBehavior.AllowGet);