处理layui序列化表格报错

0、 为什么报错?

在解决问题前,是否经过这样的报错?
请添加图片描述

说序列化类型未xxx的对象时检测到循环引用?
这种大概率是因为在数据库设计时键值与外键等字段产生冲突,导致控制器产生循环使用

尽管在控制器中数据已经查询出来,但是依旧报错。

当然,如果以调试数据库字段来解决这个问题,那么也是可以的,只不过更麻烦罢了。

1、 layui表格序列化的过程

在使用layui的table组件时,它需要的是一个含有data,msg,code,count的类来接收所收到的数据,某些方面来说,传值时强制设置code不为0也可以解决table组件code为0的错误。
而在这里,我们在控制器中查询出来的数值都存在于这个类的data属性中,而count就是查询出来的数值的总数。

我们必须保证data属性是一串数组,以数组的形式包裹着对应数值对象
请添加图片描述

2、 传入视图时layui的格式

而光是控制器是数组还不行,从控制器传值到视图中,传值的格式必须是以json格式进行传值,所以有相关报错也可以先试着转换成json格式,再将值传入视图。

尽管说,json本身就是以一个数组的形式来传输,但,数组这玩意,不就是通用于大多数编程语言中的吗?

3、 处理方式

如何序列化的问题?其实很简单,我们只需要一行代码即可。

db.Configuration.ProxyCreationEnabled = false;

将这行代码放在查询命令前,就可以省略循环引用的问题,默认ProxyCreationEnabled属性为true

例如:

myModels.Configuration.ProxyCreationEnabled = false;// 解决循环引用
var linqResult = myModels.B_AmountType.Single.ToList();// 查询语句
return Json(linqResult, JsonRequestBehavior.AllowGet); // 返回查询结果至视图

如果你不明白此处的db和myModels的话,我解释的话:db即你数据库的实例对象,myModels即你数据库的实例对象的接收变量
请添加图片描述

即上图的声明数据库实例对象
因为数据库在mvc中是一个映射内容,因此,我们并不能直接使用。

以上,本篇内容完结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值