首页 新闻 会员 周边

如何处理MVC中View视图中DataGrid列中参数(如性别/省份等)编码转换成名称

0
悬赏园豆:30 [已解决问题] 解决于 2014-03-03 08:43

后台取出数据转换成Json格式返回给前台,前台使用jquery 中的Datagrid(具体是哪种Datagrid不限,情况都类似),若数据有参数性质的编码,如性别,Male 代表男,Femal 代表女,则需要将编码转换为文本显示到界面上,这种情况如何处理?

自己能想到的有几个思路:
1.使用Datagrid本身支持的格式化js函数进行转换,通常就是在里面写if else 分支,但仅适合参数值项较少的情况,如性别/是否等,若参数值多,如省份,则直接用js写分支不可行,且后台参数值增删需前台页面也作相应调整,明显不合理,只能通过ajax去后台取参数编码对应的值,每一行都去取则存在严重性能问题。

2.后台在取得数据后,先将编码转换成显示名称,再json处理返回给前台,这样做同样需要在后台对使用参数的字段循环处理,使用参数化字段比较多的情况下,写起来也挺繁琐。

注:使用EntityFramework+分层,以前直接通过sql多表联合查询将参数值批量转换成显示名称的方式不可行,除非是使用nativeSql。

这个问题应该是很常见,请问各位,有何比较好的处理方式,简洁/优美又不会牺牲性能,谢谢

大浪淘沙的主页 大浪淘沙 | 初学一级 | 园豆:57
提问于:2014-02-14 09:49
< >
分享
最佳答案
0

第一种方法是非常不合适的,通常两种方法比较的话,还有优缺点,没有想到你这两种方法提出来,

全是第二种方法的优点,第一种方法的优点正在构思中....

 

确实如你所说,这种场景所有人都会遇到,通常解决方法有:

1、数据冗余,在数据表中除了有编码ID外,还有可视冗余字段,这样可以在查询时不进行任何处理,

直接显示用户可视字段。(缺点有,你应该知道的,优点是以合理的并且承受的代价,空间换时间)

2、视图VIEW,这个不是MVC中的VIEW,而且数据库中的。

3、你说的代码转换功能,至于你所用的技术有什么局限性之类的,应该问题不大,好多方法可以处理呢。

比如对于性别,可以全局缓存在内存里面,国家好象也可以,这些不怎么经常变的。

 

以上几点基本都是在后台进行的,由于WEB开发的复杂性,不建议再为了这个给前台增加复杂性了,

必竟只是为了显示,如果说是为了编辑,那另当别论。

收获园豆:30
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-02-14 10:16

跟我想得差不多,确实web前段工作轻一些好,在后台转换算了,把系统参数表扔到内存里缓存起来提高性能,看来没什么更好的方式了,

大浪淘沙 | 园豆:57 (初学一级) | 2014-02-14 13:15
其他回答(2)
0

使用第二种,把 客户端要的数据返回即进行一次转换。不需要把所有的字段都返回,按需格式化数据的都在后台处理,减少客户端压力及网络传输。

Qlin | 园豆:2403 (老鸟四级) | 2014-02-14 09:53
0

用viewmodel

展示的实体本来就是viewmodel.UI从数据库取出数据后,绑定到viewmodel上,

绑定的时候以什么规则

吴瑞祥 | 园豆:29449 (高人七级) | 2014-02-14 10:28

数据库里存的是编码,前台展现的是名称,即使用viewmode,还是有个model到viewmodel转换过程,你说的只不过是跟我第二种方式类似,从model转换成viewmodel示处理

支持(0) 反对(0) 大浪淘沙 | 园豆:57 (初学一级) | 2014-02-14 13:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册