首页 新闻 会员 周边

asp.net core webapi 实体类包含Enum时如何返回给前端

0
悬赏园豆:10 [已解决问题] 解决于 2020-08-03 14:03

是直接写个提供枚举的接口,还是怎么样处理好呢?有没有什么比较好的想法?

对不起,我要起飞的主页 对不起,我要起飞 | 初学一级 | 园豆:23
提问于:2020-08-03 11:22
< >
分享
最佳答案
2

不是很明白你的意思。
是webapi返回的模型包含Enum?这个时候会返回值是个数值。
如果你想把它转成Enum对应的成员字符串,就加一个属性,并将Enum.Tostring()给那个属性。

收获园豆:7
疯疯过 | 菜鸟二级 |园豆:229 | 2020-08-03 11:51

我的意思是,比如说Person类中有一个Gender枚举属性,前端需要有一个Gender的下拉列表,这个时候,我是直接写个返回Gender枚举的接口,还是说有什么其他好的办法?怎么处理才是比较合理的?我现在想到的一种办法就是在Header里反映这个Gender枚举的json

对不起,我要起飞 | 园豆:23 (初学一级) | 2020-08-03 11:57

@helloworldworldhello:
我这边的处理方式是把我这边业务涉及的所有枚举都通过独立的一个接口进行返回。
方法名类似GetEnumMembers或是GetDicMembers,输入参数为枚举名称,输出参数是带枚举值,枚举名称,枚举描述的模型列表。
想必你也想到了实现逻辑了吧,就是通过反射,至于反射的性能问题。因为一个业务所涉及的所有枚举量不会很多,所以可以先把它放在redis等缓存里,这样就没有性能问题了。
希望可以给你一点思路

疯疯过 | 园豆:229 (菜鸟二级) | 2020-08-03 13:48

@疯疯过: 嗯,我想的也是这样,不过就是想看下大家是怎么做的,或者怎么做更规范一些,有什么好处。谢谢你了!

对不起,我要起飞 | 园豆:23 (初学一级) | 2020-08-03 14:03
其他回答(2)
0

你这个问题其实关系到了一个面向对象设计思路的问题,关系到你返回这个枚举的作用是什么。如果你返回的这个枚举是用来为下拉选项提供数据源,那么它的作用就是一个Form的Template,应该独立到返回Json的一个枝杈里,专门承载表单所需要的一些动态数据。如果它的作用是给你的数据调用用户一个全局的认识,那么它也应该独立到叫做例如DataStructure的一个枝杈里。这两个枝杈都可以跟数据枝杈区分开来。如果需要返回的是Form的数据源,里面的内容还不仅仅是Enum,还应该是一个带有displayed-name的选项。所以还是要根据需求来决定方法。

收获园豆:2
泰乐世陶潜 | 园豆:432 (菜鸟二级) | 2020-08-03 13:11
0

写个接口返回给客户端比较好。

收获园豆:1
会长 | 园豆:12401 (专家六级) | 2020-08-03 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册