NEED HELP un débutant C# inclusion de classe

NEED HELP un débutant C# inclusion de classe - C#/.NET managed - Programmation

Marsh Posté le 17-06-2008 à 18:23:23    

Salut à tous,
 
je débute en C# avec Visual studio 2008 framework 3.5 pour un projet web et galère sérieusement.
Rien ne se passe comme prévu  :cry:  
 
J'ai de l'experience en dev web mais bute sur la philosophie général de VS.
 
Pour démarrer je voudrais simplement inclure une classe cs qui me  renvoie du html à l'endroit ou je l'appelle.
 
ex : page default.aspx
 
à un endroit de cette page :  
appel de la méthode  html de la classe codehtml : code.html()
 
Dans la classe (qui est dans un fichier externe) utilisation d'une méthode qui renvoie du html
pour l'instant j'ai trouvé Response/Write(" <b>  code html  voulu</b>" );
qui apparemment nécéssite que ma classe hérite de System.Web.UI.Page
 
Mes question sont :
1/Comment j'indique à default.aspx d'aller chercher la classe dans le  bon fichier (au niveau du fichier, du projet ?)
2/Comment j'appelle ma classe dans default.html ?[edit] je veux dire dans default.aspx bien sur , y a plus de default.html depuis longtemps ;)[/edit]
 
3/question subsidiaire :  Pourquoi est-ce aussi compliqué de faire une chose si simple ( :ange: )
 
merci de votre aide précieuse.
 
(ce qui ne m'empèche pas de chercher de mon coté)

Message cité 1 fois
Message édité par freeway le 17-06-2008 à 23:54:25
Reply

Marsh Posté le 17-06-2008 à 18:23:23   

Reply

Marsh Posté le 17-06-2008 à 19:36:06    

tout ton code doit se retrouver dans le code behind de ta page.  
Avec ta page Default.aspx, tu as également une page qui s'appele Default.aspx.cs dans laquelle tu peux mettre tes méthodes appelants ta classe.  
 
la programmation aspx est particulière par rapport à de la programmation web standard, ce n'est pas la même philosophie et nécessite une bonne compréhension.  
Je t'insite donc à t'autoformer sur le sujet avant de démarrer les choses sérieuse

Reply

Marsh Posté le 17-06-2008 à 20:41:17    

freeway a écrit :


Mes question sont :
1/Comment j'indique à default.aspx d'aller chercher la classe dans le  bon fichier (au niveau du fichier, du projet ?)
le bon fichier s'appellera default.aspx.cs, c'est le nom de fichier de ta page avec l'extension .cs
2/Comment j'appelle ma classe dans default.html ?
on appelle pas de classe dans le fichier html. ASP .NET a une architecture qui distingue la présentation du code behind, comme dit moi 23372

3/question subsidiaire :  Pourquoi est-ce aussi compliqué de faire une chose si simple ( :ange: )
c'est une architecture propre, objet et contemporaine. mélanger de la présentation et du code dans le même fichier "à la" PHP est particulièrement dégueulasse




---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-06-2008 à 00:10:33    

merci de vos réponses.
ca fait du bien au moral.
 
mais malheureusement pour l'instant ca m'avance pas beaucoup.
c'est beaucoup ... trop vague
 
J'ai bien compris l'idéee du code-behind.
sauf que cette manière de faire 1 fichier aspx +1 fichier aspx.cs c'est pas toujours adéquat.
 
Exemple je veux faire une classe pour un element de la page qui sera présent dans de nombreuses pages du site.
 
je vais pas recopier cette classe dans chaque fichier aspx.cs , lol
ca sert à quoi de programmer sinon ? on en  revient aux sites  en pages html ou fallait recopier le contenu dans chaque fichier.(que ce soit du html ou du bo c# n'y changepas grand chose  )
 
donc je veux pouvoir inclure un fichier Mesclasesgenerals.cs
(apparement sa place est dans le répertoire /bin )
et mettons une classe Monmenu dans ce fichier  
 
je reprends mes questions plus clairement :
 
1/ comment inclure/importer ces classes dans les fichiers de pages : pages1.aspx, pages2.aspx
 
2/ ensuite comment j'appelle ma classe à partir de ce fichier page1.aspx ?
quand la classe que je veux appeler est dans le fichier page1.aspx.cs ca va il sais ou la chercher mais sinon ?
y t'il pas une histoire de mise en place de systeme de nom ?
 
3/ quelle est le retour de html
j'ai fait Response.write("html" ) mais cela marche pour une classe située dans Page_Load mais plus si elle est toute seule ...mmmm sur un vieux bouquin ASP.NET ils proposent Writer.write mais il veut pas.
   
 
si une bonne ame à le courage de m'éclairer.  :hello:

Reply

Marsh Posté le 18-06-2008 à 00:17:07    

je crois que tu n'as rien compris à la programmation orientée objet en fait...
tu veux utiliser ces classes dans d'autres pages ? alors tu ajoutes le fichier décrivant la classe à ton projet, tu prends bien garde que cette classe soit dans le même namespace, et tu l'instancies via un new !
 
désolé, mais là tu es tellement imbibé de philosophie PHP que je pense que tu ferais mieux d'abord d'apprendre les bases de la POO, car là tu as vraiment des manques


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-06-2008 à 01:51:23    

Harkonnen a écrit :

je crois que tu n'as rien compris à la programmation orientée objet en fait...
tu veux utiliser ces classes dans d'autres pages ? alors tu ajoutes le fichier décrivant la classe à ton projet, tu prends bien garde que cette classe soit dans le même namespace, et tu l'instancies via un new !
 
désolé, mais là tu es tellement imbibé de philosophie PHP que je pense que tu ferais mieux d'abord d'apprendre les bases de la POO, car là tu as vraiment des manques


 
ecoute harkonnen.
Tu as peut-etrre et meme certainement raison sur le fond.
mais les faits sont la je me suis engagé (certainemnt à la legère) à develloper une appli web en c# et en plus le calendrier est serré.
je ne connais pas .net mais avais fait du asp y a longtemps.
et c'est vrai je pensais que ce serait plus simple.
 
maintenant je ne peux plus reculer et je rame.
 
guide moi pour l'esprit de la chose et décrit moi simplement un exemple.
c'est clair que je démarre en POO mais je suis pas completement idiot non plus.
mes exigences ne sont quand meme pas délirante.
partager entre les pages de mon appli un bout de code commun.
 
J'ai bien compris que je faisais un objet et l'instancier.
 
au point ou j'en suis j'arrive bien à faire ceci :
dans ma page1.aspx  

Code :
  1. <% codehtml ht=new codehtml();
  2.       ht.retour();  %>


et dans mon fichier  page1.aspx.cs

Code :
  1. public class codehtml : System.Web.UI.Page
  2. {
  3.     public void retour() {
  4.         Response.Write("<b>coucou</b>" );
  5.     }
  6. }


 
sauf que :  
1/ le response.write me revoie une erreur  
mais pas quand je le mets dans le page_Load du meme fichier page1.aspx.cs :
 

Code :
  1. public partial class _Default : System.Web.UI.Page
  2. {
  3.     protected void Page_Load(object sender, EventArgs e)
  4.     {
  5.         Response.Write("<b>coucou</b>" );
  6.     }
  7. }


 
alors pourquoi il est accepté dans le page_load et pas dans ma classe codehtml ???
quelle est la différence importante que je n'ai pas pigé ?
 
 
y a t'il pas plus simple que de faire hériter ma classe de System.Web.Ui.page ? y  a t'il d'autre choix ?
 
2/appeler la classe du seul fichier code-behind est trop contraignant.
 
 je veux pouvoir faire ce que tu me dis mais je bute sur des problèmes d'importations  
 comment dis t'on en C# d'importer une classe dans un fichier , Comment prend t'on garde que la classe soit dans le meme namespace ?  
 
 
La vraie réponse qui aide vraiment si une personne peut la fournir est les quelques lignes de code précises qui me manque et m'enpeche d'avancer.
Un grand merci pour tout geste :)


Message édité par freeway le 18-06-2008 à 01:56:08
Reply

Marsh Posté le 18-06-2008 à 08:48:46    

Reply

Marsh Posté le 18-06-2008 à 19:41:51    

moi je dis, lit un bon bouquin avant, sinon tu n'y arriveras jamais.

Reply

Marsh Posté le 18-06-2008 à 23:49:26    


 
merci du lien il m'est utile.
Les exposés sont courts et en francais.
 

moi23372 a écrit :

moi je dis, lit un bon bouquin avant, sinon tu n'y arriveras jamais.


 
en fait j'en ai un mais c'est le framework1 alors y a plein de chose qui marche pas. Ca m'agace.
 
 
Ce qui est pénible avec microsoft c'est qu'on ne peut pas dire qu'on manque de doc.
 
C'est tout le contraire.
Mais y a des tonnes et des tonnes de docs mais en meme temps l'ensemble des regles qui devraient tenir en 30 pages condensés à tout casser  on les trouve nulle part.
 
Du style un composant c'est ceci , ca s'importe exactement comme cela.  
L'import d'une classe se fait de telle manière précise.
 
C'est pour cela que j'ai toujours préféré les livres scinetifiques russes que les américains (entre Landau et Lifschitz et Feynmann j'ai choisi mon camp pour ceux qui voient de quoi je parle.  ;) )
 
 


Message édité par freeway le 18-06-2008 à 23:50:04
Reply

Marsh Posté le 20-06-2008 à 15:53:00    

Déjà, on fait pas de Response.Write() en ASP.NET
C'est uniquement pour du débug (et encore).
 
Crée un objet "Panel" par exemple.
 
Et dans ton code, tu fais ça :
 
default.aspx.cs

Code :
  1. public partial class _Default : System.Web.UI.Page
  2. {
  3.    protected void Page_Load(object sender, EventArgs e)
  4.    {
  5.        MaLib.DisBonjourAuMicro(monPanel);
  6.    }
  7. }


 
malib.cs

Code :
  1. public static class MaLib
  2. {
  3.    public static void DisBonjourAuMicro(Panel p)
  4.    {
  5.        p.Text = "Bonjour micro !";
  6.        p.Style.Bold = true;
  7.    }
  8. }


 
 
(aux erreurs de compilation près, ça doit marcher)


Message édité par MagicBuzz le 20-06-2008 à 15:53:43
Reply

Marsh Posté le 20-06-2008 à 15:53:00   

Reply

Marsh Posté le 20-06-2008 à 16:31:33    

Oui merci MAgicBuzz.
J'en était arrivé la.
Qu'en fait on change la proprieté .Text d'un élément plutot que de chercher à écrire dans le flux.  
C'st la ou j'ai péché par manque d'experience de l'approche objet.( honte sur moi  mais c'est vrai qu'au début ca fait beaucoup d'effort pour faire "disbonjour"   :p )
 
J'ai aussi compris apparement que toute classe incluse dans le projet par son fichier (.cs, ascx ou en dll)  était visible.
A condition de la déclarer dans le namespace ou de l 'importer !
Ce qui se fait par <%@  Import Namespace="Namespacedemalib" %> dans un fichier aspx
et Using dans un fichier .cs
 
C'est bien cela  ?
 
Après c'est vrai que c'est sympa de voir dans l' Intellisense toutes les classes apparaitre avec leurs méthodes.
 
Avez-vous de l'experience avec PostgreSql ?
Le driver .Net Npgsql (compatible version 2 du framework) passe t'il bien avec un framework ADO 3.5 ?
Ou faut-il le recompiler avec Nant (ce que j'ai pas envie de faire :( )  
 
PS MAgicbuzz est-il grenoblois ? :)


Message édité par freeway le 20-06-2008 à 18:25:02
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed