2009-12-12 7 views
0

Je travaille actuellement sur un jeu basé sur le Web en utilisant ASP.NET et C#. Auparavant, j'organisais simplement les différents écrans de jeu (début, hi-score, résultats, etc.) en panneaux individuels imbriqués dans un UpdatePanel principal et en affichant/masquant les panneaux appropriés au fur et à mesure de la progression du jeu. Cependant, j'ai sérieusement sous-estimé l'ampleur du jeu et je vais devoir le décomposer en morceaux plus maniables.Chargement .aspx dans un Panel/UpdatePanel

Mon idée est maintenant d'avoir un Main.aspx avec un UpdatePanel vide et je vais charger les différents écrans en tant que fichiers .aspx individuels. Un peu comme avec WinForms je pense, quand vous créez un autre nouveau WinForm et l'ajoutez au formulaire parent actuel.

J'ai essayé de trouver comment faire cela dans le code-behind, mais je suis toujours perdu. Je pourrais probablement faire cela avec Response.Redirect, mais alors il y aurait le scintillement habituel quand la nouvelle page se chargera, ce que je veux éviter.

Je suis tombé sur quelque chose d'intéressant appelé un UFrame mais cela semble fonctionner dans le code HTML au lieu du code-behind.

J'apprécie n'importe quelle aide ou suggestions dans cette matière, et m'excuse si ceci a été demandé avant. Je vous remercie.

Modifier: En ce qui concerne la réponse de womp, .ascx semble être un pas dans la bonne direction pour moi. J'ai réussi à faire fonctionner mon contrôle de contrôle Startscreen à l'intérieur de Main.aspx. Cependant, un autre problème est apparu, où l'écran devient vide lorsque j'essaie d'ajouter un autre contrôle utilisateur à un panneau à l'intérieur Main.aspx sur un clic de bouton.

Le gestionnaire d'événements, j'ai un bouton dans le contrôle EcrAccueil est:

protected void Btn_Arcade_Click(object sender, EventArgs e) 
    { 
     this.Parent.Controls.Add(LoadControl("Arcade.ascx")); 

    } 

Je ne suis pas sûr s'il y a quelque chose de mal à cela, mais le parent dans ce cas est essentiellement ce que j'ai appelé la GameContentPanel qui réside dans le UpdatePanel de Main.aspx.

Je ne pense pas que ce soit un problème avec le fudding HTML non plus, puisque je l'ai testé en le chargeant d'abord au lieu du Startscreen, et tout s'est bien passé.

J'ai également essayé de charger les deux contrôles ensemble au début dans Main.aspx, et les deux contrôles se chargent correctement aussi bien.

Répondre

1

Les "écrans" peuvent-ils être .ascx usercontrols? Vous pouvez charger une commande usercontrol dans un panneau en utilisant LoadControl("~/path/to/myControl.ascx"), puis ces contrôles peuvent prendre part au cycle de vie de la page principale.

Si elles doivent vraiment être dans des pages .aspx séparées, vous devrez peut-être regarder en utilisant un iframe, ou peut-être repenser votre approche. Les applications Webforms ont été conçues pour que beaucoup de choses se passent dans le contexte d'une page/formulaire, et ne transfèrent pas le contrôle vers plusieurs pages.

+0

Merci pour la réponse rapide, womp. Ils n'ont pas besoin d'être des pages .aspx séparées, juste séparées en différents objets/classes, donc quand d'autres programmeurs ont besoin d'ajouter un autre module au jeu, ils n'ont pas à se soucier de déblatérer avec la solution entière et recompiler tout. Je suis relativement nouveau à ASP, donc je n'ai aucune idée de comment fonctionne .ascx, mais je vais les étudier maintenant. Définitivement prometteur. Merci encore. – Kronon

Questions connexes