2009-10-13 24 views
0

我的ASP.Net項目中有兩個用戶控件,一個用於Internet Explorer 6(IE6),另一個用於瀏覽器不是IE6時使用。根據瀏覽器確定要調用哪個用戶控件

我該如何去設置它,以便發生這種情況;這是我可以放在主頁面上的東西嗎?

回答

2

您可以通過使用Browser property of the HttpRequest object來實現此目的。

您的頁面可以在設計時同時擁有兩個用戶控件,然後在運行時檢查Request.Browser屬性以確定客戶端的瀏覽器並以編程方式隱藏您不希望用戶看到的用戶控件。
或者,您可以純粹從您的服務器端代碼實例化並呈現正確的用戶控件(再次檢查Request.Browser屬性後)。

例如,運行下面的代碼:在Internet Explorer 7,並運行時

IE7

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write(Request.Browser.Type.ToString()); 

    } 
} 

在 「標準的」 ASPX頁面顯示:

火fox3.5.3

(當在Firefox上運行)

所以,你可以有代碼像在網頁下面要添加此功能:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.Browser.Type.ToString().ToLower().Contains("ie")) 
     { 
      // User's browser is Internet Explorer. 
      // Let's hide UserControl1 but display UserControl1 
      WebUserControl1.Visible = false; 
      WebUserControl2.Visible = true; 
     } 
     else 
     { 
      // User's browser is something other than Internet Explorer. 
      // Let's hide UserControl2 but display UserControl1. 
      WebUserControl1.Visible = true; 
      WebUserControl2.Visible = false; 
     } 
    } 
} 
+0

真棒解決方案,謝謝! – Goober 2009-10-13 20:50:12

1

爲了讓你可以使用瀏覽器:在您的content.master的代碼隱藏頁的請求頭找出哪些瀏覽器

Response.Write(Request.Browser.Browser.ToString()); 
Response.Write(Request.Browser.Version.ToString()); 
2

嗅嗅,並設置控件的Visible屬性,你唐't想用來做假。假設這兩個控件是由母版頁自己託管的。如果他們只出現在某些頁面上,那麼您可以做同樣的事情,但在這些單獨的頁面而不是母版頁中。

+0

從提出問題的方式來看,似乎這些用戶控件包含在主頁內。 – 2009-10-13 14:52:47

0

您可以使用JavaScript導航器對象。將它們封裝到div中,然後隱藏它們或使用jQuery顯示它們。

+0

根據控件的性質,可能會太「沉重」以致無時無刻都在渲染,並讓UI隱藏其中一個。儘管如此,仍是一個可行的解決方案 – 2009-10-13 15:00:19

相關問題