Asp.Net, DropDownList, AutoPostBack et Google Chrome
J'ai un simple asp.net page (framework 3.5) et un UpdatePanel avec une série de dropdownlist je veux remplir asyncronously. Tous fonctionne bien dans tous les principaux navigateurs (Opera, Safari, IE6, IE7, FF3), mais pas dans google Chrome.
Chrome semble ignorer l'événement SelectedIndexChanged qui a dû faire le asynch demande.
Quelqu'un connaît une solution simple à ce point?
Merci!
EDIT: Plus d'Infos
Comme je l'ai dit à Adam Lassek, le contrôle updatepanel d'actualisation après le clic pour un asp:Bouton à l'intérieur de lui, mais il ne fonctionne pas avec le menu déroulant de la SelectedIndexChanged
événement.
L'updatepanel est définie comme:
<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
sans Déclenche spécifié, et le dropdows disposer d'ensembles AutoPostBack="true"
Mise à JOUR: (et retagging)
Après quelques tentatives, je découvre qu'il n'est pas un problème de l'UpdatePanel, mais il semble que le AutoPostback de listes déroulantes ne fonctionne pas correctement, même dans les pages sans ScriptManager et UpdatePanel...
Je suis sûr que c'est un problème qui concerne seulement ce projet, parce que si je commence un nouveau Site web à partir de zéro et de reproduire la structure de ce, fonctionne très bien sur Chrome...
Je suis en train de supprimer l'étape par étape, toutes les autres choses dans le projet d'origine pour trouver exactement quel est le problème.
Si quelqu'un a quelques idées en attendant....
source d'informationauteur tanathos
Vous devez vous connecter pour publier un commentaire.
Il existe une incompatibilité connue avec Ajax.NET et Chrome & Safari 3.
Petit, les tests rapides peuvent être trompeuses, car il s'affiche à travailler très bien avec l'existant Ajax.NET de la bibliothèque. C'est parce qu'il parvient à effectuer la première requête Ajax et échoue lorsqu'qui se termine, de sorte que lorsque vous essayez d'effectuer les deuxième Ajax action vous remarquerez qu'il a échoué. Si vous mettez un UpdateProgress de contrôle sur votre page, vous remarquerez que, après la première demande de votre UpdateProgress contrôle n'est pas disapppear.
Heureusement, il n'y est une réponse!
Récemment, il y avait un grand poste de mettre en place détaillant ce à faire que vous pouvez trouver ici:
http://blog.turlov.com/2009/01/aspnet-ajax-compatibility-patch-for.html
L'essentiel, c'est que Chrome et Safari 3 rapport à eux-mêmes comme WebKit dans leur userAgent chaînes.
Vous avez besoin d'ajouter un peu de javascript à l'aide de la Ajax.NET cadre en reconnaissant les navigateurs basés sur WebKit qui se présente comme suit:
Vous devez l'ajouter à un fichier javascript et d'y faire référence dans votre ScriptManager:
Notez que vous pouvez garder la WebKit.js dans une assemblée et de référence que par l'aide d'un ScriptReference tag similaire à ceci:
Une fois que vous avez fait tout cela, si à tout possible de l'arrêter à l'aide de Formulaires web et Ajax.NET et l'utilisation de MVC et jQuery 🙂
Cela se produit parce que MicrosoftAjax.js ne la détection du navigateur, et il est correctement détecter Chrome comme Safari. Pour corriger cela, vous devez apporter les modifications suivantes:
Ajouter un nouveau type de navigateur
Mise à jour le si-alors logique de recherche de Chrome
Assurez-vous de mettre le Chrome vérifier avant de Safari. Si vous avez besoin d'aide pour remplacer le Cadre de script avec votre version personnalisée, lire ce.
Mise à JOUR:
J'ai créé une page de test et de mettre les contrôles suivants:
Et a écrit ce qui suit le code-behind:
L'Updatepanel fonctionne très bien dans Chrome, sans modification de la bibliothèque Ajax. Donc, je pense que quelque chose d'autre est à l'origine de ce problème. Vous allez avoir besoin d'isoler la cause du problème par un processus d'élimination. Commencer avec quelque chose de simple comme cet exemple, et de travailler jusqu'à ce que vous avez un morceau à la fois.
C'est pas une bonne idée d'utiliser MVC et jQuery au lieu de WebForms et ASP.NET AJAX. Il faut comprendre tous les avantages et les inconvénients des technologies et des approches à choisir.
D'abord, MVC est un modèle de conception et n'a rien à voir avec les cadres mentionnés. Vous pouvez facilement mettre en œuvre un modèle MVC avec WebFroms. Il existe de nombreuses implémentations différentes de la MVC pour ASP.NET et WebForms.
Deuxième, jQuery, une grande bibliothèque JavaScript, ne permettent pas d'intégration avec et ne repose pas sur le côté serveur ASP.NET la fonctionnalité, par opposition à ASP.NET AJAX qui est livré en standard avec le ASP.NET 3.5+ et utilise entièrement ASP.NET fonctionnalités, telles que côté serveur mark-up, contrôle ScriptManager, script côté serveur, la combinaison, à la localisation et à la mondialisation, etc.
Troisième, jQuery peut facilement être utilisé en conjonction avec ASP.NET et ASP.NET frameworks AJAX ainsi l'amélioration de la programmation côté client. Microsoft a annoncé que jQuery sera livré avec la prochaine ASP.NET 4.0 et maintenant vous pouvez simplement l'ajouter à votre projet manuellement.
Je viens de tomber sur un problème similaire aujourd'hui (bien que je n'étais pas à l'aide d'Ajax), et a trouvé une solution. Voir le troisième commentaire en bas sur ce blog.
J'ai le même problème. J'ai une liste déroulante à l'intérieur d'un ajax publication et le besoin de faire une mise à jour lorsque l'indice choisi changements. Il fonctionne avec une page de base dans un nouveau projet de trop.
Après l'ajout de la Webkit script mentionné dans les autres réponses, je reçois toujours le même problème et lors de l'exécution du débogueur javascript dans le navigateur Chrome, j'obtiens cette erreur:
MISE À JOUR: SOLUTION
J'ai trouvé que dans mon cas, c'était un CustomValidator qui interférait avec le gestionnaire d'événements. Réglage EnableClientScript de faux résolu le problème.
Vous pouvez consulter la solution
http://dotnetguts.blogspot.com/2009/05/dropdownlist-autopostback-problem-with.html