似乎是两个 bug (.NET Framework 2.0 beta)

博客堂各位堂主谈论 .NET 2.0 已经很久了,我却一直在 .NET 1.1 的项目中“煎熬”着。近些日子终于耐不住、下载了 .NET Framework 2.0 SDK,在项目闲暇读一些类库文档。

(1) System.Globalization.EastAsianLunisolarCalendar

.NET 2.0 中 System.Globalization 命名空间下,多出了几个新的 Calendar,其中 EastAsianLunisolarCalendar 是 ChineseLunisolarCalendar, JapaneseLunisolarCalendar, KoreanLunisolar, TaiwanLunisolarCalendar 的基类。

从字面上看,这些应该是不少人盼望已久的“阴阳历”了;但 SDK 文档还没有完成,只能从字面上窥一斑:GetSexagenaryYear 应该是“天干”,GetTerrestrialBranch 应该是“地支”(原来这么翻译的!),GetLeapMonth 应该是取得某年中闰月的月份,Type 是日历类型(枚举值有:SolarCalendar 阳历,LunarCalendar 阴历,LunisolarCalendar 阴阳历,Unknown 未知)……等等。

文档中说:ASP.NET?Web 服务器控件中的 Calendar 支持 System.Globalization 命名空间中所有 Calendar 类型的日历,让我高兴不已,很想通过 Calendar 先睹为快。但这一计划很快被我否定了,因为 Calendar 控件使用的日历是和区域设置相关的,每个固定区域性都有一组可选日历(OptionalCalendars)。

比如:zh-TW 区域性中这组可选日历包括:(注意可选日历有优先顺序区分)
      System.Globalization.GregorianCalendar (Localized)    公历的已本地化版本
      System.Globalization.GregorianCalendar (USEnglish)   公历的美国英语版本
      System.Globalization.TaiwanCalendar                          台湾地区日历

ja-JP 区域性中可选日历为:
      System.Globalization.GregorianCalendar (Localized)   公历的已本地化版本
      System.Globalization.JapaneseCalendar                      日本历
      System.Globalization.GregorianCalendar (USEnglish)  公历的美国英语版本

zh-CN 区域性中可选日历为:
      System.Globalization.GregorianCalendar (Localized)   公历的已本地化版本

区域设置中使用的日历必须为 OptionalCalendars 中的日历。这里似乎就有一个 Bug 了:既然已经实现了 ChineseLunisolarCalendar, JapaneseLunisolarCalendar,……却“忘”了将它们添加到对应区域性的 OptionalCalendars 中去!

这个要么是微软“忘”了;要么就是这些 LunisolarCalendar 还没有完全实现,只是处在测试阶段。

(2) TreeView 服务器控件:

TreeView 在以前的 Microsoft Internet Explorer Web Controls 控件包里是以 *.htc 的行为脚本文件提供客户端支持的。它不仅限制了浏览器必须是 Internet Explorer,而且版本也被定死在 IE 5.5 及以上。非 IE 浏览器及 IE 5.5 以下的浏览器(如 IE 5.01)都返回了“__doPostBack”的版本。

.NET 2.0 中的 TreeView 在 SDK 文档中说,它支持 IE 5.5 及以上和 Netscape 6 以上版本的浏览器,它生成了 Javascript 脚本文件来实现它的客户端效果(如展开、折叠等)。这里值得一提的是,ASP.NET 2.0 中使用了一个名为 http:///WebResource.axd 的处理程序,来释放嵌入的资源(如图片、脚本等),TreeView 使用的图片、脚本都是动态生成,而且 WebResource.axd 本身也并不存在,它只是在 IIS 中的一个 ISAPI 映射。(本人当前操作系统为 Windows 2000 Server,尚没有确认其他操作系统的情况。)

尽管 SDK 文档中说 TreeView 客户端脚本支持 IE 5.5 及以上和 Netscape 6 以上版本的浏览器,但我初步测试,在 IE 5.01 也得到了 Javascript 输出的版本,展开、折叠效果正常。在 IE 4 中,服务器输出了 “__doPostBack”的版本,没有使用脚本处理展开、折叠等效果。

但这里似乎有一个 Bug 是关于 Mozilla 的:Netscape 6 以上版本浏览器是基于 Mozilla 开发的,但这里的 TreeView 支持 Netscape 的客户端效果,却给 Mozilla 返回了“__doPostBack”的版本。

这个问题,与其说是个 Bug,不如说是微软的某种“故意”?微软认为 Mozilla 属于只懂?HTML3.2 的浏览器?(看看这篇文章中的现象……

posted on 2004-09-17 21:35  破宝  阅读(249)  评论(0编辑  收藏  举报

导航