更新时间:2021年1月15日
解决问题:
昨天留下了一个对象转json的问题
今天中午吃完饭特意来解决一下
问题所在:
.net5新出的json类,这个玩意儿我可算是记住了
坑:没法将对象转成json,但是可以将对象集合转成json(这是什么操作???)
解释:
昨天测试过了,放ccjson对象进去直接没有数据,断点问题就出现在这里,但是直接放课程表的集合进去,又可以转成json。
(一开始我还以为是我ccjson的问题)
解决:
还是用老牌的
虽然,我还是想用新版的。。。。。。
你肯定得疑惑了,微软出的json不能将对象转json那要这个类有什么用???
我也分析了一下,匿名类可以转
像这样,就可以转!真的莫名其妙啊!
既然如此,微软提供了转json方法,我们就最好不要用第三方的了。而且据说性能是newtonsoft的3倍!
思路:
既然不能将对象转换成json,那我们就不要在模型层加入新的模型,我改用common工具包,自己定义一个json工厂!
后续有不同格式的json只需要加入方法的重载即可!
我们控制器进行使用:
只需要在返回值的地方加上数据即可!不加参数是有默认参数的。
现在代码的扩展性提高了不是一个档次!从十几行到现在一行的代码。
编程是一种艺术。
前端
我们开始回到枯燥无味的前端
右边的卡片,要变成动态的数据。图片要为课程图片,现在还没没加这个功能,现在先用这个汉堡代替。。
我们后端已经返回这名同学的所有课程,现在弄前端
封装一下前端API:
写入方法:
数据得到了,连之前莫名其妙的报错都好了
很意外!竟然没有出现bug,现在感觉不踩两个坑,都对不起今天编的程!
莫得问题,也许真的是经验导致,bug之前搞项目遇到的几万个问题,这次都提前注意了点,然后就莫得问题了。
吃亏得教训,人才变聪明。
搞下一个模块:
学生选课界面
现在这里数据是死,我们要把他变活
首先是要从后端得到数据
继续完善
我们要返回课程表,但是得注意一下,这个地方,应该还要知道学生是否已经选了。这个还真不太方便,之前实现的是学生返回已经选择的课程,那现在就是要返还学生没有选择的课程,我可以调用上面的方法,然后查找所有课程,减去已经选择的课程。
现在就有2种做法了
- 后端直接处理好学生未选择的课程返回数据
- 后端返回学生处理好的数据,和全部数据,前端进行删减操作
第一种只能知道哪些课程没有选,第二种,虽然难度大点,但用户体验要好点的,最主要的是,一些计算还是放到前端吧,毕竟服务器贵啊!
有了思路,现在就开动!
选择第二种的话,后端难度不大:
具体实现应该算类似与数组的减法:
通过api获取数据
坑:记得这里不要同步发送!不要同步发送!后期项目得炸!老坑了!
写一个相减的算法:
- 代表学生有的课程
- 代表所有课程
- 代表学生还没选择的课程(这个是我们要的)
坑:两个对象不一致 = =将不成立!
这里我们不能直接a==b,应该去比较课程的id,坑
坑:created钩子函数,里面的方法如果有2个,将会异步运行!,一开始我将减法的方法在钩子函数里面运行,结果直接读取不到,所以最好这里就放一个方法,或者放多个没有联系的方法!!!!!不然炸炸炸!
终于得到了我们想要的结果,数据库有4个课程,该学生有3个课程,还可以选择1个课程
接下来,把数据绑定到页面上去
特意多加了几门课程,莫得问题
开始做选择功能,之前的项目通常是每一行加一个操作按钮,不过感觉不是很美观,借鉴一下腾讯云的做法,特挑战一下弄一个多选操作
多选按钮的话,前端应该是要得到选择课程的id列表,后端接受课程id列表,然后进行操作
创建了一个存储选择列的id列表,然后将选择的数据id存入这个列表中
记得加入多选按钮组:
然后实现了多选的功能:
选中的数据会把课程id存入到
后端将他进行解析即可!
大功告成!慢慢来!