bonnebouffe
Messages postés38Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention24 novembre 2008
-
7 août 2004 à 18:33
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
8 août 2004 à 11:54
Bonjour,
Actuellement, j'ai développé mon site BonneBouffe.org en Coldfusion.
J'ai décidé de le réécrie en ASP.Net (C#) et je suis confronté à un bête problème (je suis débutant dans ce langage) : comment dois-je faire pour inclure une page dans une autre ?
Actuellement, j'utilise une seule page (index.cfm) dans laquelle je fais passer via l'url une page que je veux inclure (j'utilise le tag <CFINCLUDE ...>).
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 7 août 2004 à 21:09
En asp.net, il est recommandé de ne pas inclure des pages.
Asp.net à pour cela concu un autre outil : les usercontrol.
qu'est-ce qu'un UserControl (UC), c'est la meme chose qu'une page, sauf qu'a la difference qu'au lieu d'avoir dans ta directive <%@ Page ... tu auras <%@ Control ... et au lieu de dériver de Page tu deriveras de usercontrol, mais sinon tu peux faire exactement la meme chose.
Les UC sont donc des fichiers comme des pages aspx, leur extension est cependant differente, ce sont des fichiers ascx, c'est la seule difference qu'il y a
Tu peux Ensuite inclure ton UC dans ta page comme n'importe quelle controle par exemple : il faut juste le declarer au dessous de la directive page : <%@ Register TagPrefix="ACME" tagname="MONUC" Src="MonFichier.ascx" %>
Les UC se comportent de la meme facon que les autres controls ont peut donc leur rajouter des propriétés, interagir avec eux à partir de la page, leur rajouter des evenements, ils sont donc tres puissant, et c'est pour ca que je te les conseils.
Tu as aussi une autre méthode en asp.net qui est hérité d'asp, c'est la méthode include, je connais cette méthode juste de nom, et je pense qu'elle est a oublié, vu ses faibles capacités, mais je suppose que ca ressemble à <CFINCLUDE> je connais pas Coldfusion.
J'espere t'avoir repondu, il doit surement y avoir des exemples d'UserControl sur ce site et j'ai déjà repondu à pas mal de personne dans le forum à ce sujet, si tu n'as pas tout à fait compris, tu n'as qu'a me le dire, je ferais un exemple plus parlant :)
je suis allé voir ton site, et je pensais faire un UserControl, qui prendrait en paramètre un objet Recette, et le reste du control se remplirait automatiquement
J'ai fait ca pour mon site, et pour les differents vins que j'ai :)
Je regarde si je peux te poster ca, et je te redit
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 7 août 2004 à 23:15
Ci dessus, une source que j'ai posté pour te montrer ce que tu pourrais faire avec tes recettes, tu n'auras plus qu'une page te gerant les recettes, et apres tu peux appeller ce UserControl avec en paramètre l'objet Recette.
et tu pourras faire encore plus, tu pourras rechercher une recette par popularité, par note, difficulté etc... d'une facilité deconcertante, tu pourras faire tout cela en qq lignes.
Pour ton problème particulier, tu as plusieurs solutions :
* si ton site par exemple possède des page HTML que tu ne souhaites pas réécrire mais juste afficher dans ton site .NET tu peux utiliser un User Control (en appelant le custom Web control) qui va ouvrir les fichiers HTML et les recracher (le flux texte) dans ta page en cours, pour ca regarde ici :
- http://www.asp-php.net/tutorial/asp.net/customwebcontrol.php
Si tes recettes sont en base et que tu dois faire un 'modèle' que tu vas ajouter dans ta page en cours, il faut construire un User control (comme te l'a expliqué jesusonline) qui va récupérer les information et les ajouter dans le composant. Tu as un exemple ici :
- http://www.asp-php.net/tutorial/asp.net/urlrolloverinfo.php
Avec ca tu auras déja une bonne base pour avancer dans ton développement.
bonnebouffe
Messages postés38Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention24 novembre 2008 8 août 2004 à 08:56
Je pense avoir + ou - avoir compris le principe mais je cale sur un bête truc ...
Comment faire pour lui donner dynamiquement la page à "appeler" ?
Qd j'exécute ma page, il donne le msg d'erreur : "Object reference not set to an instance of an object"
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace bnnet
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class index : System.Web.UI.Page
{
UserControl monuc;
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 8 août 2004 à 10:25
Qd tu as l'erreur : "Object reference not set to an instance of an object" ca veut dire que tu n'as pas instancié ton objet, dans la plupart des cas tu as oublié de mettre un new ce qui est le cas.
public class index : System.Web.UI.Page
{
UserControl monuc;
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 8 août 2004 à 10:45
lol
si tu comprend pas grand chose, ca me parait normal, car c'est pas un des concepts les plus faciles d'asp.net
Dans le bouquin que je t'ai conseillé, il en parle au chapitre "Un peu plus loin" donc ne t'en fait pas si tu comprends rien, ca va venir petit à petit :)
mais ca marche ?
Tu veux que je t'explique quelque chose ou reexplique ?
Je sais pas si ca va marcher, ca devrait marcher, mais tu n'exploites pas toutes les possibilités des UC.
Je pense que tu as du faire un Fichier de code pour ton UC un fichier ascx.vb, si c'est pas le cas, le code si dessus suffit.
Sinon dans ton fichier ascx.vb tu as une classe qui doit hériter de UserControl
Par exemple :
Public Class Vin : System.Web.UI.UserControl
{
}
et c'est le nom de cette classe qu'il faut que tu charge le code devient donc :
public class index : System.Web.UI.Page
{
Vin monuc;