2009-10-13 2 views
0

У меня есть два пользовательских элемента управления в моем проекте ASP.Net, который явно используется для Internet Explorer 6 (IE6), а другой, который должен использоваться, когда браузер пользователя не является IE6 ,Определение того, какой элемент управления пользователя вызывать на основе браузера

Как я могу настроить его так, чтобы это произошло; это что-то, что я могу поставить на главной странице?

ответ

2

Вы можете достичь этого, используя Browser property of the HttpRequest object.

На вашей странице могут быть как пользовательские элементы управления, установленные во время разработки, так и во время выполнения, вы проверяете свойство Request.Browser, чтобы определить браузер клиента и программно скрыть пользовательский элемент управления, который вы не хотите видеть.
В качестве альтернативы вы можете создавать и визуализировать правильный пользовательский контроль (опять же, после проверки свойства Request.Browser) исключительно с вашего серверного кода.

Например, выполнив следующий код:

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

    } 
} 

В "стандартной" экран страницы ASPX:

IE7

при запуске в Internet Explorer 7, а также:

Огонь 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

1

Чтобы получить браузер можно использовать:

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

нюхать заголовки запросов в коде-за вашей content.master по странице, чтобы выяснить, какой браузер и установите Visible свойство на контроле, что вы дон 't хотите использовать false. Предполагается, что эти два элемента управления размещены самой главной страницей. Если они появляются только на некоторых страницах, вы можете сделать то же самое, но на этих отдельных страницах, а не на главной странице.

+0

Из-за того, что задавался вопрос, похоже, что пользовательские элементы управления содержатся в основных страницах. –

0

Вы можете использовать объект навигатора javascript. Оберните их в div, а затем скройте их или покажите с помощью jQuery.

+0

В зависимости от характера элементов управления может быть слишком «тяжелым», чтобы отображать как все время, так и позволить пользовательскому интерфейсу скрывать один из них. Тем не менее, жизнеспособное решение. –

Смежные вопросы