时区编辑器控件(admin\Localization\TimeZoneEditor.ascx)中有这样一个功能,它可以检查存储时区信息的本地化XML文件(App_GlobalResources\TimeZones.zh-CN.xml)与默认的存储时区信息的XML文件(App_GlobalResources\TimeZones.xml)的差别。在本地化文件缺少相应的条目时会要求增加,有多余条目时会自动删除。(条目是否相同用key值来标识,下面的XML中有key值的含义)
如果我将本地化文件增加一个key相同的条目,如:
<root> <!-- name="时区名" key="相对GMT(格林尼治标准时间)的偏移量" --> <!-- 有一条重复key的值 --> <timezone name="(GMT) 格林威治标准时 : 都柏林、爱丁堡、伦敦" key="0" /> <timezone name="(GMT) 格林威治标准时 : 都柏林、爱丁堡、伦敦" key="0" /> <timezone name="(UTC -12:00) 国际日期变更线" key="-720" /> <timezone name="(UTC -11:00) 中途岛、萨摩亚群岛" key="-660" /> <timezone name="(UTC -10:00) 夏威夷" key="-600" /> <!-- 其余省略 --></root>那么将会产生,无论怎样都会提示缺少条目且无法删除多余条目,如下图:
解决方法:在读取本地化文件到数据集后,定义时区信息表key为主键。如果定义不成功(有重复的key),则提示出错,然后进行相应的错误处理即可。
这个时区编辑器中存在的Bug如果不用挑剔的眼光去看它的话,也许它还算不上Bug。算是对DNN精益求精的要求吧!