Définir une propriété pour un navigateur spécifique
Je viens de faire une petite découverte, en ASP.net 2.0 il est possible de spécifier une valeur d'une propriété pour un navigateur spécifique :
<asp:Label id="Lbl1" runat="server" ie:text="IE" mozilla:text="FF" Text="ni IE ni FF" />
Plus interessant encore on peut utiliser cette astuce pour les masterpage :
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" mozilla:MasterPageFile="~/MasterPage.master"
Mais concretement, quelle est l'utilité ? J'ai toujours été contre avoir plusieurs code HTML différent selon le type de navigateur, un code qui fonctionne est un code qui fonctionne sur TOUS les navigateurs, je suis donc contre l'utilisation de cette astuce pour régler les problèmes de compatibilité inter-navigateur. Mais cette astuce peut quand même être utile pour changer de masterPage des navigateurs disponible sur les téléphones portables. En effet ceux-ci ont une bande passante et une taille d'affichage très réduite, il est alors intéressant de fournir une masterPage spécifique pour ce genre de navigateur.
Comment cela fonctionne ? Le parseur des pages aspx utilise les fichiers de config nécessaire pour configurer les HttpBrowserCapabilities. Ces fichiers sont situés dans C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers
le prefix utilisé par le parseur aspx (ie, mozilla, ...) est tout simplement la propriété id de la balise browser :
<browsers>
<!-- sample UA "Nokia7110/1.0 (04.88)" -->
<browser id="Nokia" parentID="Default">
<identification>
<userAgent match="Nokia" />
</identification>
Vous pouvez bien sur rajouter d'autres navigateurs, pour cela il suffit de créer un fichier .browser et de le mettre dans le dossier APP_Browser de votre application Web.