2009-06-23 3 views
2

J'ai une ancienne application asp.net. Cela se comporte différemment dans IE8 puis IE7, même en mode compatibilité IE7. L'application contient plusieurs contrôles utilisateur qui utilisent le System.Web.UI.WebControls.Panel, il me semble que IE8 (mode inc 7) rend le panneau en tant que tables, mais dans IE7, ils sont rendus en tant que divs .System.Web.UI.WebControls.Panel rendu comme table dans IE8

Il me semble que ASP.Net n'identifie pas le navigateur correctement, est-ce que quelqu'un a des pointeurs sur la façon de résoudre le problème?

Répondre

1

Regardez ce

http://msdn.microsoft.com/en-us/library/x3k2ssx2(VS.80).aspx

Navigateur Redéfinition Type de détection

Si vous voulez contrôler explicitement comment la page est rendue au lieu de reposant sur la détection automatique du navigateur , vous pouvez définir la propriété ClientTarget de la page. Vous pouvez définir la propriété de manière déclarative en tant qu'attribut de la directive @ Page pour cette page, ou vous pouvez la définir par programme.

La valeur de la propriété ClientTarget est un alias pour le type de navigateur pour lequel vous souhaitez effectuer le rendu. Pour exemple, pour forcer la page à rendre pour Microsoft Internet Explorer 6.0, vous pouvez utiliser le niveau d'alias. L'alias doit être défini dans la section clientTarget (paramètres ASP.NET Schema) du fichier de configuration . Les valeurs par défaut prédéfinies sont ie5, ie4, uplevel et downlevel.

En spécifiant le downlevel alias, vous pouvez forcer la page HTML pour rendre éléments 3.2 compatibles, peu importe quel navigateur a demandé la page. De même, en spécifiant uplevel, vous pouvez forcer la page à rendre le style CSS attributs même pour les versions plus anciennes du navigateur .

Vous pouvez créer des alias supplémentaires par les définissant dans le Machine.config ou fichier web.config, ce qui vous permet de créer des définitions de navigateur personnalisés. Pour plus d'informations, voir ASP.NET Paramètres de configuration.

+0

J'ai défini ClientTarget = "uplevel" pour l'instant - il semble que le serveur Live ignore la section browserCaps dans le fichier web.config. Mes dev/tests peuvent identifier le navigateur mais le serveur live échoue avec IE8. Besoin d'avoir des mots avec l'administrateur et j'ai posé une autre question ici: http://stackoverflow.com/questions/1037708 – Adrian