IE6是一款老土的浏览器,这八年来推出的大多数新功能它都不支持,不过这款浏览器的用户量仍然占15-25%左右,这严重制约了浏览器技术的向前发展。 许多人都认为是时候彻底抛弃这款老土浏览器了,不过现在,有此想法的已经不仅仅是个人和一些非赢利性的组织,有几家公司甚至已经联合推出了一个呼吁人们抛 弃IE6的主题网站。
这个“邪恶的IE6”,我实在是受够了他,嘿嘿(Google也是忍无可忍决定抛弃IE6),所以我也决定抛弃这个让人头疼不已的IE6,说做就做,谁让我是行动派的呢。
在ASP.NET MVC2中实现禁止被IE6访问其实非常简单,我们只要获取到客户端浏览器的IE版本,然后再判断这个版本号是不是6,如果是6那我们输出事先准备好的页面来提示用户,更换其他浏览器。
刚开始我想用HttpModule来实现,可是弄了半天没有弄明白,所以我决定放弃这个方案,改用ActionFilter来实现。(如果有高手知道怎么弄请不吝赐教)。
ActionFilter能够对Action进行过滤,在Actionfilter中我们可以实现禁止被IE6访问,但是大家都知道ActionFilter只能被应用到Controller级或Action级,并没有应用程序级的Filter,听说MVC3将支持应用程序级的Filter,不管是不是真的,先来看看在MVC2中如何实现。
首先我们需要自定义一个ActionFilter名字叫做CheckExplorerAttribute
这个ActionFilter在Action被执行前来判断客户端IE是否为IE6,如果是IE6则输出部分视图ExplorerError中的内容。
下面我们来看看ExplorerError中的内容。
为了是这个Filter能够在整个应用程序中起作用我们需要自己定义一个Controller,这个Controller继承自系统的Controller,然后为这个Controller添加刚才自定义的Filter上,不说废话了,上代码。
最后我们创建的每个Controller都自称自这个MyController,这样用户不论访问那个页面都将看到我们自定义的那封信了,继续上代码。
OK,大功告成了,看效果图。