在ASP.NET MVC2中實現拒絕被IE6訪問

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.