[ASPX][C#] Héritage de System.Web.UI.Page

Signaler
Messages postés
4
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
27 avril 2004
-
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
bonjour

alors voilà, j'ai voulu factoriser des pages qui avait un comportement commun.

j'ai ainsi créer une classe abstraite classeMere.cs comme suit:

Code:
public abstract class classeMere : System.Web.UI.Page
{
public string toto;
public classeMere (string toto)
{
this.toto = toto;
}

private void Page_Load(object sender, System.EventArgs e)
{
// du code
}

#region Web Form Designer generated code
[...]
#endregion
}

j'ai ensuite créer une classe/page classeFille.aspx.cs et classeFille.aspx qui hérite de cela

Code:
public class ClasseFille : ClasseMere
{
public ClasseFille ():
base("truc"){}
}

tout cela à l'air de fonctionner (pas d'erreur de compile)

le problème c'est que lorsque je désire ajouter des webForm (via le mode design) et bien ils sont tous grisées..... il n'a pas l'air de se rendre compte que tout dérive de System.Web.UI.Page.
on peut certe les ajouter à la main (dans le html) mais cela ne me convient pas (la présentation devant se faire un une autre personne en drag and drop)....
y'a t'il une solution? quelque'una t'il déja eu ce problème t comme à t'il fait ?

[
j'ai bien essayer de metre ces comportement commun dans une autre classe et de la racrocher via un agregat, mais dans mon cas, c'est pas possible :'(
]

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Je pense que quand tu dis ajoutes des webforms tu veux dire ajouter des controles :)
Sinon moi j'ai essayé de faire en gros ce que tu me dis et j'ai pu rajouter des controles, mais j'ai fait ca en vb et j'ai vs.net 2003 (architect) cela vient peut etre aussi de ca.

voici mon code :

Public Class tout3
Inherits PageDerive

#Region " Code généré par le Concepteur Web Form "

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page

WriteTime()

End Sub

End Class

Public Class PageDerive
Inherits System.Web.UI.Page

Public Sub WriteTime()
Response.Write(Now.ToShortDateString)
End Sub
End Class

et dans le aspx j'ai mis <%@ Page Language="vb" AutoEventWireup="false" Codebehind="tout3.aspx.vb" Inherits="TestExemple.tout3"%>
attention à l'attribut inherits

donc je ne comprend pas le pb c'est peut etre un problème spécifique à C# ou a ta version de VS
j'ai pas tout à fait compris le code C# il y a surtout un truc que je comprend pas et que j'ai pas du mettre c'est le abstract c'est l'equivalent du mustinherit en VB ?
oui je pense que c'est ca je viens d'essayer avec un mustinherit et ca me donne les meme problèmes que toi, je vais essayer de voir ce que je peux faire de mon coté pour vb mais il te reste toujours une eventuelle solution en elevant ton abstract ...

Cyril (Alias Jesusonline)
Messages postés
4
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
27 avril 2004

salut

le coup du abstract ca veux simplement dire que dans ma classe MEre j'ai une fonction non défini (un truc du genre:
public void fctToto () ;
)
la classe mère n'es ainsi pas instanciable et toutes ses classe fille devront décrire cette fonction.

sinon moi j'ai VS 2002 (je sais pas si ca peut venirde là....)
et oui il s'agit bien de controle queej désire ensuite ajouter en drag and drop.

voilà voilà
Messages postés
4
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
27 avril 2004

il semble que cela vienne "juste" du passage d'argument dans le constructeur!
s'il n'y a pas d'argument dans le base() de la page fille, ca passe, sinon ca passe pas (ou alors il faut passer un ruc spécial dans la page aspx au niveau des directives (passer l'argument dans le inherits ou.... ??????)

bref voilà si quelqu'un sait ce qu'il faut modifié....
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
ton problème doit je pense venir de ton abstract qui doit avoir pour équivalent mustinherit en Vb moi en mettant mustinherit j'avais le meme problème que toi ...

Malheureusement je ne comprend pas le public ClasseFille ():
base("truc"){}
a quoi correpond ton base ?
serait ce juste l'equivalent de faire en vb public classeFille as new ClasseMere("truc") ?
[:'(] je connais pas C# et je crois que c'est indispensable pour t'aider ...

sinon à partir de ca : " la classe mère n'es ainsi pas instanciable et toutes ses classe fille devront décrire cette fonction. " ce que tu voudrais ne serait pas une interface ?

Je sais pas si tu connais vb mais à tu essayé de comprendre mon code ? est-ce que ce que j'ai essayé te conviendrais ?

d'apres le dernier message j'ai de plus en plus l'impression que ce que tu demandes est une interface ?

j'espere t'avoir aidé (bienque j'en doute fort)

@+

Cyril (Alias Jesusonline)
Messages postés
4
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
27 avril 2004

en faîte en java (je pense que c#voir vb c'est la même chose) une classe abstraite est une classe non instanciable ayant certaines méthode non définie (que les signatures) mais ayant d'autre methode complétement ecrite, alors qu'une interface n'a que des methode seulement signée.
je pense que le base correspond à ton new ClasseMere("truc")

voilà
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
en vb il y a les mots clés overrides etc... qui devront pouvoir t'aider mais en C# aucune idée je pense qu'il faudrais plus que tu demandes de l'aide sur le forum de www.csharpfr.com"

bon courage


Cyril (Alias Jesusonline)