在ASP.NET MVC2中实现拒绝被IE6访问

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

public class CheckExplorerAttribute:ActionFilterAttribute
    {
        public override 
void OnActionExecuting(ActionExecutingContext filterContext)
        {
            
if (filterContext.HttpContext.Request.Browser.MajorVersion == 6)
            {
                ViewResult result
=new ViewResult();
                result.ViewName 
= "ExplorerError";
                filterContext.Result 
= result;
            }
        }
    }

这个ActionFilter在Action被执行前来判断客户端IE是否为IE6,如果是IE6则输出部分视图ExplorerError中的内容。

下面我们来看看ExplorerError中的内容。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<h3>致XXX网用户的一封信</h3>
<div>
    
<p>
        亲爱的用户,当您看到这封信的时候,我们刚刚做出了一个非常艰难的决定。
    
</p>
    <p>
        在万恶的IE6停止对广大用户和网站开发者进行肆意蹂躏之前,我们决定拒绝使用IE6的用户访问我们的网站。
    
</p>
    <p>
        请您更换为其他的浏览器,以获得更好的浏览效果,给你造成的不便我们深表遗憾!
    
</p>
    <p>
        最后我们送给广大用户一句忠告,“真爱生命,远离IE6”!
    
</p>
</div>

为了是这个Filter能够在整个应用程序中起作用我们需要自己定义一个Controller,这个Controller继承自系统的Controller,然后为这个Controller添加刚才自定义的Filter上,不说废话了,上代码。

[CheckExplorer]
    public class MyController:Controller
    {

    }

最后我们创建的每个Controller都自称自这个MyController,这样用户不论访问那个页面都将看到我们自定义的那封信了,继续上代码。

public class HomeController : MyController
    {
        
//
        
// GET: /Home/

        
public ActionResult Index()
        {
            
return View();
        }

    }

OK,大功告成了,看效果图。

posted on 2010-12-24 19:00  卜俊生  阅读(1475)  评论(2编辑  收藏  举报