Comment pouvez-vous vous déplacer ASP.Net les contrôles à différents endroits sur le Web formulaire au moment de l'exécution?
Est-il un moyen de "déplacer" un contrôle.
Mon client veut placer un certain morceau de balisage (représentant quelque élément visuel) dans l'un des différents lieux sur la page. Les emplacements sont différents au point que je ne peux pas l'effet de ce changement sur les CSS (en flottant ou quelque chose).
Je considère que le contrôle en plusieurs points avec le décor Visible à "false", puis l'affichage de l'un dans l'endroit qu'ils voulaient faire de cette page.
Toutefois, le code de ce contrôle n'est pas anodin, il y a un couple modèle sections, par exemple. Ayant pour duper cela à plusieurs endroits permettrait d'obtenir difficile. Aussi, je ne veux pas avoir à travailler avec ce contrôle strictement à partir du code-behind pour la même raison.
Donc, je voudrais le mettre dans un endroit sur le formulaire Web, le déplacer sur la base d'où je le veux. Pourrais-je mettre des Espaces réservés dans des endroits différents, ont le contrôle en un seul endroit, puis les retirer et ajouter à la bonne place? Je soupçonne que ce serait le travail.
Quelqu'un a une meilleure idée? Quelle est la meilleure pratique pour cela?
Vous devez vous connecter pour publier un commentaire.
Je vous recommande d'utiliser un espace réservé de contrôle, le déplacement de votre balisage dans un contrôle utilisateur, puis le chargement de cette lors de l'exécution et de l'ajouter à la pertinente de l'espace réservé.
Par exemple.
Cela permettra d'éviter d'encombrer votre page avec inutile de balisage, et de le charger à l'exécution permettra également d'éviter une confusion inutile lorsque, plus tard, un autre développeur regarde le code et qui ne peuvent pas immédiatement voir pourquoi un contrôle est en un seul endroit dans le balisage, mais rend sur une partie complètement différente de la page.
Une alternative (et que j'ai vu de nombreuses fois avant) est à l'aide de javascript et le DOM. Rendre votre contrôle à l'intérieur d'un caché balise div. Afin de vous rendre votre contenu ici:
Alors, disons que vous vouliez déplacer tous ici (la balise span est à l'intérieur parce que c'est ce que nous allons remplacer):
Vous définissez le code javascript suivant:
Et quand vous voulez déplacer le contenu vers le nouvel emplacement, composez le:
En ligne des Pièces faites ce que vous voulez faire?
Ou, vous pouvez modifier le parent par programmation de vos contrôles pour les déplacer dans une zone séparée.
Vous pouvez remplacer la méthode Render et place les contrôles où vous le souhaitez dans le code html.
Vous avez seulement besoin d'ajouter des contrôles à la collection de Contrôles qui doivent interagir sur le serveur. Le reste de votre code HTML peut être simplement écrit dans le flux de réponse. Si vous remplacez le Rendu, vous pouvez créer le code html de toute façon vous semble, placer les commandes dans n'importe quel ordre.
Ci-dessous est un exemple de la façon d'écrire votre code html.
Vous pouvez toujours mettre des panneaux dans la des emplacements pré-définis et ajouter le contrôle à la fenêtre particulière, lors de l'exécution.. Voici un exemple de l'ajout d'une étiquette de l'étiquette pourrait être remplacé par n'importe quel contrôle).
Autant que...
Je pense que vous allez avoir à faire la plupart de votre travail dans le code derrière.
PS.. un bon exemple de l'ensemble de la usercontrol le programme d'installation peut être téléchargé ici..
http://www.asp.net/downloads/starter-kits/time-tracker/