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

cs_merrick Messages postés 4 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 27 avril 2004 - 25 avril 2004 à 22:27
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 27 avril 2004 à 18:55
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
25 avril 2004 à 22:56
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)
0
cs_merrick Messages postés 4 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 27 avril 2004
25 avril 2004 à 23:05
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à
0
cs_merrick Messages postés 4 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 27 avril 2004
26 avril 2004 à 09:48
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é....
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
26 avril 2004 à 18:59
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_merrick Messages postés 4 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 27 avril 2004
27 avril 2004 à 09:09
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à
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
27 avril 2004 à 18:55
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)
0
Rejoignez-nous