2008-11-04 5 views
1

Je cherche à nettoyer une partie du HTML généré par un contrôleur TreeView .NET 2.0. Passer à une autre version/modèle n'est pas une option disponible.Nettoyage de la génération HTML .NET

Ma première fissure a généré un TreeView étendu, avec un Rendu substitué qui a renvoyé Regex le texte dont je n'avais pas besoin et sorti sur la page.

Le problème était lorsque j'ai essayé de réduire/développer des nœuds de l'arborescence, mon événement de publication n'a pas été déclenché. Ma supposition était que je n'avais pas besoin de faire plus de surcharge car le contrôleur TreeView parent gérerait les événements de publication.

Qu'est-ce qui me manque?

Répondre

2

Utilisez les adaptateurs de contrôle CSS: ASP.NET

http://www.asp.net/CSSAdapters/TreeView.aspx

Sans adaptateur à la fois utiliser le HTML <tableau> balises. Les adaptateurs de contrôle peuvent être utilisés de sorte que les balises imbriquées <ul> soient affichées à la place. Une combinaison de CSS et de JavaScript peut ensuite être utilisée pour afficher et masquer des parties de la hiérarchie de l'arborescence ou du menu. Lorsque le CSS et JavaScript sont supprimés, le HTML adapté se dégrade en listes simples non ordonnées imbriquées qui sont facilement interprétées par les lecteurs d'écran, etc. Vous pouvez voir cela par vous-même en sélectionnant Aucun dans le sélecteur de thème sur la gauche.

0

Vous avez réexpédié quelque chose que le contrôle doit gérer pour les publications. Il peut s'agir de l'id très alambiqué ou de l'attribut runat ... quoi que ce soit, si vous êtes bloqué avec les contrôles web, vous êtes bloqué avec du mauvais html.

Votre seule vraie façon (et non-destructive) de faire ce que vous voulez n'est pas par étendre contrôles actuels, mais en utilisant Control Adapters. Il existe déjà des adaptateurs de contrôle qui utilisent css pour le positionnement. Here's ScottGu's post on these CSS adapters.