NEED HELP un débutant C# inclusion de classe - C#/.NET managed - Programmation
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
Marsh Posté le 17-06-2008 à 20:41:17
freeway a écrit : |
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.
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
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... |
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 :
|
et dans mon fichier page1.aspx.cs
Code :
|
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 :
|
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
Marsh Posté le 18-06-2008 à 08:48:46
Ca pourra peut-être t'aider?
http://msdn.microsoft.com/en-us/as [...] r-fr).aspx
Marsh Posté le 18-06-2008 à 19:41:51
ReplyMarsh Posté le 18-06-2008 à 23:49:26
haazheel a écrit : Ca pourra peut-être t'aider? |
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. )
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 :
|
malib.cs
Code :
|
(aux erreurs de compilation près, ça doit marcher)
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" )
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 ?
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
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 ( )
merci de votre aide précieuse.
(ce qui ne m'empèche pas de chercher de mon coté)
Message édité par freeway le 17-06-2008 à 23:54:25