在线考试Quizzy作为我们的新产品,使用xml/xsl的技术,并融合了JSON数据,由于开发初期对于这些技术的陌生,导致出现了一些问题,这里做一下总结。

首先,关于在xsl中处理富文本(即带html标签的文本内容),由于disable-output-escaping在IE和Firefox中表 现不同,所以当后台输出xml格式的富文本数据时,必须带有CDATA标签,并且里面的内容必须使用 System.Web.HttpUtility.HtmlEncode()处理一遍(这是为了防止IE下xsl不能正常解析带有<>的内 容)。然后通过JS来判断浏览器,如果是Firefox,就要手动执行2遍自定义的htmlDecode方法,使富文本正常渲染在页面上,而不是源码形 式;如果是IE,则只需要执行一遍,因为disable-output-escaping会帮助我们执行htmlDecode

其次,关于FCKEditor,由于它会自动将空格,引号,双引号等特殊字符转义,所以我们关闭了它的转义功能。
FCKConfig.ProcessHTMLEntities = false ;
然后后台必须手动替换 为空格,为了节省数据库空间。
在显示的时候再手动替换回来。

第三,
当在使用JSON处理数据的时候,不需要在CDATA里面执行HtmlEncode方法,原因是没有开启disable-output-escaping属性。
处理JSON的时候要注意单引号的转义,因为目前使用JQuery生成HTML控件,都是使用拼接字符串的方式,将来要尽量使用API。
传送到后台的JSON格式数据,如果带有特殊字符,都需要使用encodeURI()方法,后台需要使用System.Web.HttpUtility.UrlDecode()方法解析回来。

软件开发

感谢软件定制开发