ASP.NET MVC 2/3 中实现filter判断浏览器

ASP.NET MVC 2/3 中实现filter判断浏览器

 

 

此为转载内容,虽然我不提倡版主的说法,但是改操作方法值得借鉴。

==============================================================

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,大功告成了,看效果图。

 

 

 

转:http://www.cnblogs.com/bjs007/archive/2010/12/24/1916293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值