2010-09-30 7 views
0

L'une des fonctionnalités d'un site Web sur lequel je travaille est que vous pouvez "maximiser" le contenu de la page, en supprimant essentiellement tous les éléments extérieurs de la page, la navigation, les bannières, etc. .Masquer les tables externes dans ASP.NET

Cela se fait actuellement dans ce qui semble être la pire façon possible:

<% 
    if (shouldBreakFrame) 
    { 
     %><!--#include file="header.include" --><% 
    } 
%> 

// Contents of page here 

<% 
    if (shouldBreakFrame) 
    { 
     %><!--#include file="footer.include" --><% 
    } 
%> 

le pied de page est essentiellement fermeture juste des balises de l'en-tête. Donc je veux nettoyer cela et je travaille sur une page maître, mais je ne sais pas comment "enlever" correctement les éléments HTML qui enveloppent le contenu quand nous voulons maximiser la page. Ce serait facile pour les tags qui s'ouvrent/se ferment d'un côté ou de l'autre du contenu, mais qu'en est-il des div/tables qui s'ouvrent en haut et se ferment en bas?

Modifier: Pour clarifier exactement ce que la sortie ressemble et pourquoi je ne peux pas « cacher » les éléments avec le code JavaScript ou bien .Visible est ici ce que la sortie pourrait ressembler et ce qu'il devrait ressembler après les éléments environnants sont cachés:

<table> 
    <tr> 
     <td>Header</td> 
    </tr> 
    <tr> 
     <td> 
      Page content here 
     </td> 
    </tr> 
</table> 

Et après des choses cacher tout ce qui reste est Page content here. Donc si je ne fais que masquer la table, le contenu disparaitrait aussi.

Répondre

2

Vous avez quelques options ici, les deux nécessitent que les éléments soient déjà contenus dans le balisage (à moins que vous ne vouliez descendre la route ajax).

Le premier serait d'utiliser CSS pour montrer/cacher des éléments via l'affichage: aucun attribut c'est explained here. Cependant, je devrais dire mai méthode préférée serait d'utiliser jQuery. Celui-ci contient deux fonctions, show() et hide() mais inclut également de façon intéressante une fonction toggle() qui affichera/cachera les éléments en fonction de leur visibilité actuelle. Cela devrait permettre à votre code d'être plus ordonné et ne devrait pas s'inquiéter de if(shouldBreakFrame). J'ai trouvé this interesting article on it qui devrait vous aider à démarrer.

La seule autre option à laquelle je peux penser est de dupliquer le code (dans la même page maître) ou d'avoir deux pages maîtres séparées. Après tout, une masterpage est essentiellement un modèle, et c'est la partie que vous voulez changer.

+0

Je ne pense pas que cela résout vraiment mon problème, car si je "masquais" les éléments environnants, cela cacherait aussi tout le _content_ de la page. – thelsdj

+0

Ah je comprends maintenant. La seule autre option que je peux penser est soit dupliquer le code (dans la même page master) ou avoir deux pages maîtres séparées. Après tout, une masterpage est essentiellement un modèle, et c'est la partie que vous voulez changer. –

+0

Juste eu une onde cérébrale. Au lieu de définir votre contenu dans les éléments que vous souhaitez afficher/masquer, vous pouvez les faire flotter sur le dessus. Cela vous permettrait alors d'utiliser la méthode ci-dessus. Si vous utilisez CSS float, vous les supprimez du flux normal de la page, de sorte que vous pouvez avoir les éléments dans une table cachée ou quelque chose qui se trouve au-dessus de l'en-tête/pied de page. –