Je suis confronté à un problème en ce qui concerne le TreeView
contrôle. J'ai activé la case à cocher pour les nœuds de TreeView
contrôle. Il fonctionne bien et s'affiche correctement. Mais lorsque je le déploie sur IIS, la case à cocher n'est pas visible. Elle n'est pas rendue du tout. Voici le TreeView
:
<asp:TreeView id="tvExplicit"
EnableClientScript="true"
PopulateNodesFromClient="true"
ExpandDepth="0"
ShowLines="true"
ShowExpandCollapse="true"
ShowCheckBoxes="Root"
OnTreeNodePopulate="tvExplicit_TreeNodePopulate"
Width="1px"
runat="server">
<Nodes>
</Nodes>
</asp:TreeView>
Ce code fonctionne bien sur ma machine locale. Mais pas lorsqu'il est déployé sur IIS. Tout fonctionne sauf l'affichage des cases à cocher pour les nœuds Root.
Nota : Les cases à cocher ne sont pas du tout rendues en HTML. Ce n'est donc pas le CSS qui bloque, selon moi.
Mise à jour : J'ai pu comprendre que la version précédente de la page est mise en cache dans IIS et n'est pas réinitialisée même après la réinitialisation du pool APP.
2ème mise à jour : L'identifiant client des cases à cocher dans localhost est le suivant ctl00_MainContent_tvExplicitn0CheckBox
, ctl00_MainContent_tvExplicitn1CheckBox
etc. Cela peut donc être la raison du problème. Une autre chose que j'ai remarquée est la différence dans les ID clients générés pour les contrôles dans le localhost et dans le serveur déployé à IIS. Voici le rendu <a>
qui fait partie du contrôle de l'arborescence dans les deux cas :
- IIS :
MainContent_tvExplicitt0
,MainContent_tvExplicitt1
c'est l'ID du lien du nœud de l'arborescence - LocalHost :
ctl00_MainContent_tvExplicitt0
,ctl00_MainContent_tvExplicitt2
etc.
Le problème peut-il être lié à la façon dont les contrôles sont rendus dans différents environnements, à savoir mon hôte local et mon serveur IIS ? Dans l'hôte local, .Net 3.5 framework
est là et dans le serveur IIS .Net 4
. Cela peut-il être dû à ceci ? client ID
est différente dans les deux versions.
3ème mise à jour J'ai également changé la version du framework en .net 4
sur localhost
mais cela n'a pas permis de reproduire le problème. controlRenderingCompatibilityVersion="3.5"
dans le web.config. J'ai ensuite déployé le même code sur IIS, et j'ai obtenu une erreur selon laquelle controlRenderingCompatibilityVersion
n'est pas une balise valide. Est-ce que cela signifie IIS
ne fonctionne pas sur .net 4
Je n'ai pas accès au serveur IIS moi-même.
4ème mise à jour : L'application est configurée avec .net 4
dans IIS.
5ème mise à jour J'ai déployé le même build sur un autre serveur IIS sur différentes machines (il s'agissait de nos anciens serveurs sur lesquels notre application fonctionnait). Les cases à cocher sont visibles sur ce serveur. La version de .net framework est la même que celle du serveur qui rencontre des problèmes. J'ai demandé à l'équipe concernée de mettre à jour les mêmes paramètres que ceux de ces serveurs sur les serveurs qui rencontrent des problèmes. Cela n'a toujours pas aidé. Il semble donc qu'il s'agisse d'un problème de configuration du site Web sur les nouveaux serveurs où les cases à cocher ne sont pas visibles.
0 votes
Cela ressemble à un problème de type mime de IIS ou quelque chose comme ça, avez-vous Fiddler ou un autre type de moniteur de requête ouvert ? Obtenez-vous des 404 pour Javascript, des images ou autre chose ?
1 votes
Les CheckBox sont-elles présentes dans le HTML ? Si c'est le cas, je suppose qu'une classe CSS interfère.
0 votes
Non, les cases à cocher ne sont pas rendues en HTML. @VDWWD
0 votes
Pouvez-vous dire quel cadre .net vous utilisez ?
0 votes
Ce qu'il y a dans le
TreeTest_TreeNodePopulate
événement/méthode ?0 votes
C'est la méthode qui remplit les noeuds enfants @user1429080
0 votes
@satsvelke Cadre .net 4.5
0 votes
Par hasard, utilisez-vous le clientID généré des cases à cocher dans votre code JS ou jquery pour une quelconque manipulation ?
0 votes
Vérifiez la console de débogage dans le navigateur. Lorsque des exceptions JavaScript se produisent avant le rendu du contrôle de l'arbre, ou qu'un JavaScript ou un JQuery faisant référence à ces ID échoue, cela peut empêcher le rendu des boîtes au client. Les causes de ce problème peuvent être une vieille technologie ou une mauvaise configuration d'IIS, ou encore un IIS qui n'a pas été entièrement redémarré. Un ancien ou mauvais fichier JS peut également être mis en cache dans IIS. Il peut être nécessaire d'apporter une modification au fichier JS (ajouter un espace) et de le republier.