Fondamentaux
Wisej.NET vous permet de créer de vraies applications web modernes entièrement en C# — sans JavaScript, HTML ni CSS pour commencer. Ce cours pose les fondations : vous apprendrez comment le framework garde un programme .NET côté serveur et une interface vivante dans le navigateur parfaitement synchronisés, puis vous créerez, exécuterez et déboguerez votre toute première application, d’une solution Visual Studio vide à un tableau de bord qui fonctionne. Au fil de dix modules, vous placerez et câblerez des contrôles dans le Designer, lierez des données à une DataGridView, construirez un shell d’application avec sa navigation, et gérerez boîtes de dialogue, validation et tâches en arrière-plan. Les modules suivants abordent les thèmes, l’interopérabilité JavaScript via le contrôle Widget, ainsi que la configuration, la sécurité et le déploiement — avant de tout rassembler dans le projet de synthèse Mini Helpdesk. Il s’adresse aux développeurs qui découvrent Wisej.NET et veulent un parcours guidé et pratique, des fondamentaux jusqu’à une vraie application prête à livrer.
Créez, exécutez et déboguez votre première application Wisej.NET temps réel. Le chemin le plus rapide de l’installation à un tableau de bord qui fonctionne.
- Niveau: Beginner
- Durée: 4,5 h
- Modules: 10
Programme
Module 1: Comment fonctionne Wisej.NET
Votre premier module de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas de construction, réussissez la vérification des connaissances, puis terminez le lab pratique pour valider le module.
- LectureCe qu’est Wisej.NET (et quand l’utiliser) · 8 min
Une vision claire du framework avant d’écrire la moindre ligne de code.
- LecturePremiers pas avec Wisej.NET · 12 min
D’un Visual Studio vide à une application qui tourne — et les habitudes qui gardent le code propre.
- Leçon vidéoConstruisez votre première application Wisej.NET · 6 min
Regardez une première application Wisej.NET prendre forme — projet, Designer, l’événement d’un bouton et une exécution en local. Directement ici, dans le lecteur.
Transcription de la narration
Module un. Votre première application Wisej.NET. Nous allons créer un petit écran qui demande un nom et affiche un message d'accueil. Ceci présente le flux de travail de base : concevoir l'interface, gérer un événement et tester le résultat dans un navigateur.
Commencez dans Visual Studio et choisissez Créer un nouveau projet. Wisej.NET utilise le flux de travail de projet familier, avec des modèles qui fournissent les fichiers d'application initiaux. L'interface s'exécutera dans le navigateur, tandis que notre code d'événement s'exécutera sur le serveur.
Recherchez Wisej.NET. Cette procédure pas à pas utilise le modèle d'application Web Wisej.NET 4 avec C#. Sélectionnez ce modèle et continuez. S'il est absent de votre propre installation, vérifiez que l'extension Wisej.NET et les modèles de projet sont installés avant de continuer.
Choisissez un nom de projet et un emplacement, puis cliquez sur Créer. Visual Studio génère le projet et sa fenêtre de démarrage. Regardez Solution Explorer : c'est ici que vous trouverez les fichiers de l'application et reviendrez à la fenêtre au fur et à mesure que vous construisez l'écran.
Construisez le projet avant d’ouvrir le concepteur. La build compile l'application afin que le concepteur puisse charger ses types. Regardez la fenêtre de sortie et attendez que la construction soit réussie. Si la construction échoue, résolvez les erreurs avant de poursuivre la mise en page.
Dans Solution Explorer, double-cliquez sur Window1 pour ouvrir sa vue de conception. C'est la surface sur laquelle nous disposons les contrôles. Le concepteur enregistre sa mise en page dans Window1.Designer.cs. Conservez ce fichier généré sous le contrôle du concepteur ; écrivez le comportement de l'écran dans Window1.cs.
Faites glisser les contrôles du Toolbox vers la fenêtre. Une étiquette demande le nom de l'utilisateur, une zone de texte accepte la réponse et un bouton lancera le message d'accueil. Ajoutez une deuxième étiquette pour le résultat. Chaque contrôle a désormais un rôle clair dans l'interaction.
Définissez les Name et Text de chaque contrôle dans la fenêtre Propriétés. Name est l'identifiant utilisé par votre code ; Text est ce que l'utilisateur voit. Utilisez txtName pour la saisie, btnSayHello pour le bouton et lblStatus pour le résultat. L'étiquette d'en-tête est lblTitle.
Double-cliquez sur le bouton pour créer son gestionnaire Click. Lisez txtName.Text et coupez les espaces. Si le résultat est vide, définissez lblStatus.Text sur un message demandant un nom, puis revenez. Sinon, mettez le message d'accueil sur l'étiquette. La validation a lieu avant la réponse réussie.
Appuyez sur Démarrer pour exécuter l'application localement. Lorsque le navigateur s'ouvre, entrez un nom et cliquez sur Dites bonjour. Le gestionnaire Click s'exécute et l'étiquette de résultat affiche le message d'accueil. Vous avez connecté un écran visuellement conçu au code C# et vu la réponse dans le navigateur.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 1 · 10 min · Note de réussite 80%
- Lab pratiqueLab — Créer votre première application Wisej.NET · 25 min
Objectif: Une application Wisej.NET d’un seul écran : saisissez un nom, cliquez sur un bouton et un libellé vous salue — le cycle complet « concevoir → nommer → gérer l’événement → exécuter ».
Module 2: Contrôles, événements et Designer
Module 2 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas du tableau de bord, réussissez la vérification des connaissances, puis construisez le tableau de bord dans le lab pratique.
- LecturePlacer des contrôles avec le Designer Wisej · 9 min
Construisez un écran visuellement dans le Designer — placez, nommez et disposez les contrôles avant tout comportement.
- LecturePropriétés, événements et code généré par le Designer · 11 min
Ce que génère le Designer, où placer votre code et comment brancher proprement l’événement d’un bouton.
- Leçon vidéoConstruisez un tableau de bord Wisej.NET · 4 min
Regardez un tableau de bord prendre forme — contrôles du Designer, propriétés nommées, un événement Click de bouton et une exécution en local. Directement ici, dans le lecteur.
Transcription de la narration
Dans cette leçon, nous allons créer un tableau de bord Wisej.NET dans le concepteur Visual Studio. Nous allons organiser ses contrôles, leur donner des noms significatifs et connecter un bouton à un gestionnaire Click. Vous verrez quel travail appartient à la mise en page générée et lequel appartient à votre propre code.
Ouvrez DashboardWindow en mode Création. Cette fenêtre rassemblera l'état du service, les commandes et l'historique des événements en un seul endroit, afin que les utilisateurs puissent comprendre le résultat de chaque action sans changer d'écran.
Utilisez le concepteur pour organiser les contrôles, le Toolbox pour les ajouter et la fenêtre Propriétés pour les configurer. Ces trois surfaces fonctionnent ensemble : sélectionnez un contrôle sur le canevas avant de modifier ses propriétés.
Ajoutez un en-tête et une étiquette d'état distincte, puis placez les trois étiquettes de service dans un panneau. Le panneau regroupe les informations associées, tandis que l'état général reste facile à trouver au-dessus.
Ajoutez les boutons Démarrer, Arrêter, Réinitialiser et Actualiser, suivis de la liste des événements. Les boutons lancent des actions ; la liste explique ce qui s'est passé. Garder cet historique visible facilite le suivi des actions répétées.
Définissez Text pour les mots que l'utilisateur voit et Name pour l'identifiant utilisé par votre code. Un nom tel que btnStart doit identifier l’objectif du contrôle, afin que son gestionnaire d’événements soit facile à localiser ultérieurement.
Double-cliquez sur Démarrer pour créer son gestionnaire de clics. Mettez à jour les étiquettes d'état et appelez un assistant pour ajouter l'événement. La réutilisation de l'assistant de journalisation permet de maintenir la cohérence de l'historique des événements entre les quatre commandes.
Écrivez le comportement dans le fichier C# standard de la fenêtre. Le concepteur conserve son propre fichier généré pour la création et la présentation des contrôles. Garder ces responsabilités séparées empêche une modification ultérieure de la conception d'écraser votre logique manuscrite.
Exécutez le projet et attendez que le navigateur s'ouvre. L'écran que vous avez conçu est désormais l'interface utilisateur de l'application en cours d'exécution. Vérifiez son état initial avant de tester les boutons.
Click Démarrez et regardez les trois étiquettes de service passer à En ligne. L'état général devient En cours d'exécution et la liste d'événements enregistre l'action. Ces changements visibles doivent s’accorder les uns avec les autres.
Click Arrêtez-vous ensuite. Chaque service devient hors ligne et une nouvelle entrée enregistre l'arrêt. Conserver l'entrée de démarrage antérieure permet à l'utilisateur de voir la séquence d'actions plutôt que seulement l'état actuel.
Click Réinitialiser pour ramener la démonstration à son état initial. Les entrées de journal précédentes disparaissent et l'état devient Inactif. Enregistrez la réinitialisation elle-même afin que l'historique vide ait une explication compréhensible.
Enfin, cliquez sur Actualiser pour relire l'état actuel et ajouter une entrée de journal. L'actualisation vérifie l'état ; cela ne signifie pas démarrer ou réinitialiser. Des commandes distinctes doivent produire des résultats distincts et compréhensibles.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 2 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Créer une page de tableau de bord Wisej · 30 min
Objectif: Une page de tableau de bord Wisej.NET : un titre et un libellé d’état, trois indicateurs de services, des boutons Start / Stop / Reset / Refresh et un journal des événements mis à jour à chaque clic.
Module 3: Shell d’application et navigation
Module 3 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas du shell de navigation, réussissez la vérification des connaissances, puis construisez un shell de navigation réutilisable dans le lab pratique.
- LectureConcevoir le shell de l’application · 10 min
Concevez la structure extérieure d’une vraie application — en-tête, navigation, zone de contenu et barre d’état — et faites-la se redimensionner proprement.
- LectureNavigation réutilisable et permissions · 9 min
Les quatre vues que vous allez construire, un shell unique qui possède la navigation et un premier aperçu des permissions.
- Leçon vidéoConstruisez un shell applicatif Wisej.NET réutilisable · 5 min
Regardez un shell de navigation prendre forme — en-tête, navigation à gauche, une méthode NavigateTo commune qui charge les vues dans le panneau de contenu, mises à jour du fil d’Ariane et de l’état, et des paramètres en lecture seule. Directement ici, dans le lecteur.
Transcription de la narration
Nous allons créer un shell partagé pour l'application afin que chaque page utilise la même navigation et la même mise en page. L'en-tête, la zone de navigation, la région de contenu et la barre d'état ont chacun un rôle clair. La centralisation des modifications de page nous donne également un seul endroit pour refléter les autorisations de l'utilisateur actuel dans la navigation.
Regardez le cadre extérieur rester en place pendant que la vue centrale change. Ce shell partagé donne à chaque fonctionnalité un accueil cohérent et évite de reconstruire la navigation sur chaque écran.
Organisez l'en-tête, la navigation, la zone de contenu et la barre d'état en tant que régions distinctes. Chacun a une responsabilité différente : s'orienter, choisir une fonctionnalité, effectuer le travail et rendre compte du résultat.
Ancrez l'en-tête en haut, la navigation à gauche et la barre d'état en bas. Laissez le contenu remplir l'espace restant afin que le redimensionnement préserve la structure globale.
Acheminez chaque bouton de navigation via NavigateTo. Une seule méthode peut appliquer les mêmes règles de changement de page de manière cohérente ; des implémentations distinctes dans chaque bouton dériveraient à mesure que des fonctionnalités seraient ajoutées.
Suivez NavigateTo tout au long du changement de page : supprimez le contenu précédent, chargez la vue sélectionnée, puis mettez à jour le fil d'Ariane et le statut. Le retour de navigation doit décrire la vue réellement affichée.
Les paramètres restent visibles pour l'agent de support, mais l'enregistrement est désactivé dans cette démonstration. Ceci illustre une autorisation dans l'interface ; le travail d'authentification ultérieur doit également appliquer l'autorisation réelle.
Le shell sépare désormais la navigation partagée des vues de fonctionnalités réutilisables. Lors de l'ajout d'une page, connectez-la via la même méthode de navigation et vérifiez que son emplacement et son statut restent clairs.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 3 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Construire un shell de navigation réutilisable · 35 min
Objectif: Un shell de navigation Wisej.NET réutilisable : un en-tête fixe, un fil d’Ariane et une barre d’état, avec des boutons Dashboard / Tickets / Customers / Settings qui chargent des vues UserControl dans un panneau de contenu unique — plus des paramètres en lecture seule pour un Support Agent.
Module 4: Liaison de données et DataGridView
Module 4 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur la liaison de données, réussissez la vérification des connaissances, puis construisez un écran de tickets lié aux données dans le lab pratique.
- LectureLiaison de données et DataGridView · 10 min
Modélisez un enregistrement métier, gardez la logique de données dans un service et liez une liste de tickets à une DataGridView avec des contrôles de détail.
- LectureMise en page — SplitContainer, Dock et AutoSize · 9 min
Les outils de mise en page qui organisent un écran maître-détail — SplitContainer, Dock et AutoSize — sans lutter contre la page.
- Leçon vidéoConstruisez un écran de tickets Wisej.NET lié aux données · 5 min
Regardez un écran de tickets lié aux données prendre forme — un modèle Ticket et son service, une DataGridView liée via un BindingSource, des contrôles de détail qui suivent la sélection et un Save qui rafraîchit la grille. Directement ici, dans le lecteur.
Transcription de la narration
Nous afficherons une liste de tickets dans un DataGridView et connecterons le ticket sélectionné aux contrôles de détail. Un service fournira les données, tandis que l'écran coordonnera la sélection et l'affichage. Cette séparation maintient la base de données et les décisions commerciales hors des gestionnaires d'événements de l'interface utilisateur.
Construisez l'éditeur de tickets autour d'un modèle de données partagé plutôt que de copier des valeurs entre des contrôles non liés. La liaison connecte l'enregistrement sélectionné à l'écran, tandis que le service gère les opérations de ticket.
Placez les champs de détail à gauche et laissez la grille de tickets remplir le côté droit du conteneur divisé. Les utilisateurs peuvent sélectionner un enregistrement et inspecter ses détails sans quitter la liste.
Le ticket décrit les champs d'un enregistrement. TicketService fournit des opérations telles que le chargement et la sauvegarde. L'écran appelle ces opérations au lieu de devenir le lieu où les règles de persistance sont implémentées.
Connectez la liste et la grille via un BindingSource, puis liez les champs de détail à cette même source. Le partage de l'enregistrement actuel maintient le titre, le statut, la priorité et la description alignés sur la sélection.
Enregistrez d'abord via TicketService, puis informez le système de liaison avec ResetBindings. L'actualisation de l'affichage est distincte de la sauvegarde des données : une grille mise à jour à elle seule ne prouve pas que la persistance a réussi.
Exécutez l’éditeur et sélectionnez différentes lignes de ticket. Regardez les champs de détail suivre la sélection via BindingSource. Cela confirme que la grille et l'éditeur partagent le même enregistrement actuel.
Modifiez le statut du ticket sélectionné et cliquez sur Enregistrer le ticket. Suivez l’opération dans le service et revenez à la grille actualisée. La ligne visible devrait maintenant refléter la valeur que vous avez enregistrée.
Gardez les responsabilités en matière de modèle, de service et d’écran distinctes. Lorsqu'une valeur semble erronée, cette séparation vous pose une question utile : l'enregistrement est-il erroné, la sauvegarde a-t-elle échoué ou l'affichage est-il périmé ?
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 4 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Liaison de données des tickets · 35 min
Objectif: Un écran de tickets Wisej.NET lié aux données : un SplitContainer avec une DataGridView en lecture seule liée à un TicketService, des contrôles de détail (titre, statut, priorité, date de création) qui suivent la ligne sélectionnée, et un bouton Save Ticket qui passe par le service et rafraîchit la grille.
Module 5: Boîtes de dialogue, validation et workflows
Module 5 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les boîtes de dialogue, réussissez la vérification des connaissances, puis construisez les boîtes de dialogue Create et Edit Ticket dans le lab pratique.
- LectureBoîtes de dialogue et workflows modaux · 9 min
Ce qu’est une boîte de dialogue, quand la préférer à une page, le workflow modal en cinq étapes et l’utilité des boîtes de message.
- LectureValidation et modèle Enregistrer/Annuler · 9 min
Validez au plus près de l’interface sans y enfermer les règles métier, écrivez un gestionnaire Save lisible et appliquez un pattern Save/Cancel cohérent.
- Leçon vidéoConstruisez une boîte de dialogue Create/Edit Ticket dans Wisej.NET · 5 min
Regardez le workflow d’ajout/modification prendre forme — une TicketDialog réutilisable, une validation qui bloque les saisies incorrectes, un Save qui renvoie DialogResult.OK et une page parente qui se rafraîchit avec un retour clair. Directement ici, dans le lecteur.
Transcription de la narration
Nous utiliserons une boîte de dialogue pour créer un ticket ou en modifier un existant. La boîte de dialogue vérifie les champs obligatoires et signale la réussite uniquement une fois l'opération réussie. Les opérations sur les tickets restent dans la couche de service, donc les mêmes règles s'appliquent quel que soit l'écran qui ouvre la boîte de dialogue.
Créez une boîte de dialogue ciblée pour saisir un ticket et en modifier un existant. Donnez des résultats distincts pour Enregistrer et Annuler afin que la fermeture de la boîte de dialogue n'implique jamais silencieusement que les données ont été acceptées.
Regroupez les champs du ticket dans la boîte de dialogue et gardez Enregistrer et Annuler faciles à trouver. La boîte de dialogue doit collecter une modification cohérente, avec suffisamment d'informations pour que l'utilisateur puisse l'examiner avant de l'accepter.
Initialisez la même boîte de dialogue différemment pour chaque flux de travail. Nouveau commence avec une entrée vide ; Modifier charge le ticket sélectionné. La réutilisation de la mise en page permet de conserver la cohérence des deux flux de travail sans confondre leurs états de départ.
Exécutez ValidateForm avant de renvoyer un résultat accepté. Si les valeurs requises sont manquantes, laissez la boîte de dialogue ouverte. DialogResult.OK doit communiquer une entrée acceptée valide, pas simplement que le bouton Enregistrer a été enfoncé.
Ouvrez Nouveau et essayez d'enregistrer sans titre. Le message identifie les informations manquantes et la boîte de dialogue reste ouverte, donnant à l'utilisateur la possibilité de corriger la saisie sans redémarrer l'opération.
Remplissez les champs obligatoires et acceptez la boîte de dialogue. Le parent appelle ensuite TicketService et actualise la grille. Suivez cet ordre pour que l'utilisateur voie le résultat de la modification acceptée et enregistrée.
Sélectionnez un ticket existant et ouvrez Modifier. Ses valeurs actuelles devraient apparaître dans la même boîte de dialogue. Modifiez un champ, enregistrez et vérifiez que la ligne correspondante est mise à jour plutôt que de créer un autre ticket.
Utilisez la même séquence pour les deux workflows : valider, accepter, enregistrer via le service et actualiser. Garder ces étapes explicites facilite la gestion des échecs d’annulation et de validation sans écritures accidentelles.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 5 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Boîtes de dialogue de création et de modification de tickets · 35 min
Objectif: Des boîtes de dialogue Create et Edit Ticket réutilisables, construites sur l’écran du module 4 : une seule TicketDialog pour New et Edit, une méthode ValidateForm() qui bloque les saisies incorrectes avec des messages clairs, un Save qui renvoie DialogResult.OK et une page Tickets qui ajoute/met à jour via le service et rafraîchit la grille.
Module 6: État, sessions, tâches en arrière-plan et erreurs
Module 6 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le traitement en arrière-plan, réussissez la vérification des connaissances, puis construisez un exécuteur de tâches en arrière-plan avec journalisation dans le lab pratique.
- LectureÉtat, sessions et tâches en arrière-plan · 10 min
État de session par utilisateur et état partagé (et le piège des champs statiques), plus l’exécution d’un travail long dans une tâche en arrière-plan réactive.
- LectureGestion sûre des erreurs et journalisation · 9 min
Interceptez les exceptions et affichez des messages sans risque, journalisez des détails utiles et gardez le gestionnaire de la tâche lisible avec try/catch/finally.
- Leçon vidéoExécutez du traitement en arrière-plan en toute sécurité dans Wisej.NET · 5 min
Regardez un exécuteur de tâches en arrière-plan prendre forme — état par utilisateur, un workflow Start/Cancel, une barre de progression et un journal, et un try/catch/finally qui journalise les détails mais montre à l’utilisateur un message sans risque. Directement ici, dans le lecteur.
Transcription de la narration
Nous exécuterons une simulation d’exportation ou d’importation en arrière-plan et afficherons sa progression sans bloquer l’interface. Chaque utilisateur connecté conservera son propre état de fonctionnement. Nous traiterons également les échecs avec un message utile pour l'utilisateur tout en gardant les détails des erreurs internes hors de l'écran.
Utilisez la démonstration d’exportation et d’importation pour suivre une tâche au fil du temps. Un écran réactif a besoin de plus qu'une barre de progression : les utilisateurs doivent comprendre si le travail est en cours, terminé, annulé ou échoué.
Gardez les commandes de démarrage, l'annulation, la progression et le journal visibles ensemble. Ils répondent à différentes questions : que puis-je faire, où en est le travail et que s’est-il déjà passé ?
Dans RunJobAsync, attendez chaque étape et signalez sa progression. Utilisez le gestionnaire d'erreurs pour les échecs et le bloc finally pour le nettoyage, afin que l'interface puisse quitter son état occupé même en cas d'échec du travail.
Démarrez l'importation et observez les contrôles changer pendant l'exécution du travail. Désactivez les commandes qui entreraient en conflit avec l'opération active, mais gardez la progression et les commentaires disponibles afin que l'utilisateur puisse suivre le travail.
Conservez la progression et d’autres valeurs spécifiques à l’utilisateur dans la session en cours. Un champ statique est partagé entre les utilisateurs, donc y stocker l’état du travail d’une personne pourrait permettre à une autre personne de le voir ou de le modifier.
Activez Simuler l'erreur et exécutez à nouveau le travail. Conservez les détails du diagnostic dans le journal à des fins d'enquête, pendant que l'utilisateur reçoit un bref message de sécurité. Les détails de l’exception technique ne doivent pas devenir un texte d’erreur public.
Le bouton lance l'opération, le travail effectue le travail et l'écran signale son état. Gardez ces rôles séparés afin que le succès, l’annulation et l’échec puissent tous remettre l’interface dans un état utilisable.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 6 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Tâches en arrière-plan et journalisation · 35 min
Objectif: Un exécuteur de tâches en arrière-plan réactif : boutons Start/Cancel, une barre de progression, un libellé d’état et un journal horodaté, un travail long exécuté avec async/await, un try/catch/finally qui journalise les détails mais affiche un message sans risque, et un état d’interface toujours réinitialisé — avec l’état par utilisateur tenu à l’écart des champs statiques.
Module 7: Thèmes et modernisation de l’interface
Module 7 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur la modernisation, réussissez la vérification des connaissances, puis appliquez un thème au tableau de bord et modernisez-le dans le lab pratique.
- LectureThèmes et Theme Builder · 9 min
Appliquez un thème intégré, voyez la place des fichiers de thème et des options de style, et utilisez Theme Builder à un niveau débutant — sans toucher à la logique métier.
- LectureHiérarchie visuelle et finitions sans risque · 9 min
Les règles de hiérarchie visuelle qui rendent les écrans faciles à parcourir, et comment peaufiner la mise en page sans casser la liaison, la navigation ou la validation.
- Leçon vidéoModernisez un tableau de bord Wisej.NET · 5 min
Regardez un tableau de bord métier se moderniser — un thème intégré, un sélecteur de thème, des cartes d’indicateurs, des commandes regroupées et un état de navigation actif — tandis que chaque workflow existant continue de fonctionner. Directement ici, dans le lecteur.
Transcription de la narration
Nous mettrons à jour l'apparence du tableau de bord à l'aide d'un thème intégré, de cartes et d'une navigation cohérente. Les services existants, la validation et la liaison de données continueront de faire leur travail. Cela nous permet d'améliorer la façon dont les utilisateurs lisent et naviguent sur l'écran sans réécrire le comportement commercial de l'application.
Modernisez l'écran existant sans reconstruire son comportement. Un thème Wisej.NET offre des choix visuels cohérents ; les améliorations de la mise en page et de la navigation rendent ensuite l'application plus facile à comprendre.
Rendez le titre de la page facile à identifier, regroupez les métriques associées et placez les commandes à côté du contenu qu'elles affectent. La hiérarchie visuelle devrait aider les utilisateurs à décider où chercher et quoi faire ensuite.
Le sélecteur de thème change Application.Theme.Name, tandis que SetActiveButton marque l'élément de navigation sélectionné. Traitez l'apparence et l'emplacement comme des préoccupations distinctes afin que les utilisateurs sachent toujours où ils se trouvent après avoir changé de thème.
Basculez entre les thèmes intégrés et comparez les mêmes commandes. Leur apparence change tandis que le flux de travail reste le même. Vérifiez la lisibilité et les états actifs plutôt que de juger le thème uniquement par ses couleurs.
Examinez le tableau de bord terminé dans son ensemble. Un espacement, des cartes et une navigation cohérents doivent prendre en charge la liaison et la validation des données existantes. Un rafraîchissement visuel réussit lorsque le flux de travail familier devient plus clair.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 7 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Thème et modernisation du tableau de bord · 35 min
Objectif: Un tableau de bord et un shell de navigation modernisés : un thème intégré avec un sélecteur de thème fonctionnel, un en-tête clair et une navigation à gauche avec l’état de la page active, des cartes d’indicateurs plus des commandes regroupées et l’activité récente, des espacements cohérents — et chaque workflow, liaison et validation des tickets existants toujours fonctionnels.
Module 8: Intégration JavaScript avec Widget
Module 8 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le widget, réussissez la vérification des connaissances, puis construisez un widget JavaScript relié à des données C# dans le lab pratique.
- LectureContrôles natifs ou Widget · 9 min
Quand utiliser les contrôles natifs de Wisej.NET ou un Widget JavaScript personnalisé, le fichier JavaScript qui crée le widget (un exemple init/update complet) et comment le relier depuis C# via Packages, InitScript et Options.
- LectureC# propre et sécurité des widgets · 9 min
Gardez les règles métier en C# (pas en JavaScript), encapsulez le code d’intégration et identifiez les risques de sécurité des scripts tiers.
- Leçon vidéoIntégrez un Widget JavaScript dans Wisej.NET · 5 min
Regardez l’intégration d’un widget JavaScript prendre forme — une enveloppe Widget qui charge JS/CSS, des données d’affichage sans risque transmises par un service C#, un événement serveur de rafraîchissement et une carte de données pour vérifier les valeurs. Directement ici, dans le lecteur.
Transcription de la narration
Nous ajouterons une petite visualisation d'état JavaScript à un écran Wisej.NET. Les contrôles natifs géreront toujours l’interaction ordinaire et C# sera propriétaire des données, des décisions et de la journalisation. Le widget affichera les valeurs qu'il reçoit, nous donnant un visuel spécialisé sans créer une deuxième source d'état de l'application.
Ajoutez une petite visualisation JavaScript à l'application Wisej.NET existante. Conservez la logique principale en C# afin que le visuel supplémentaire ne devienne pas le deuxième propriétaire des décisions de l'application.
Utilisez les étiquettes, les boutons et la journalisation natifs Wisej.NET pour une interaction ordinaire. Introduisez un Widget uniquement pour le visuel spécialisé. Cela permet de concentrer l'intégration au lieu de remplacer les contrôles qui résolvent déjà le problème.
Envoyez au widget uniquement les valeurs d'affichage dont il a besoin : statut, nombre de tickets et charge du système. C# reste responsable de ces valeurs ; la visualisation du navigateur les présente sans recevoir de données de serveur non liées.
Le gestionnaire de boutons met à jour les étiquettes natives et envoie les mêmes données via UpdateWidget. L’utilisation d’un seul résultat pour les deux présentations empêche le texte et la visualisation de décrire différents états.
Click Actualisez les données du serveur et comparez les étiquettes avec le widget. Ils devraient changer ensemble à partir de la même opération de serveur. S’ils ne sont pas d’accord, inspectez les données transmises à travers la limite d’intégration.
Essayez tour à tour Sain, Avertissement et Critique. Les événements C# mettent à jour l'état visuel et enregistrent la modification. L'historique des événements permet d'expliquer pourquoi le widget a son apparence actuelle.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 8 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Construire un widget JavaScript · 35 min
Objectif: Un petit widget visuel JavaScript (jauge d’état ou graphique) relié à des données C# côté serveur : un contrôle Widget alimenté en valeurs d’affichage sans risque via ses options, une carte de données côté serveur pour les vérifier, un bouton Refresh qui met à jour les données C# et rafraîchit le widget — toutes les règles métier et tous les secrets restant en C#.
Module 9: Configuration, sécurité et déploiement
Module 9 de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur la revue de déploiement, réussissez la vérification des connaissances, puis construisez une liste de contrôle de revue de déploiement dans le lab pratique.
- LectureConfiguration et secrets · 9 min
Quels fichiers de configuration examiner avant une mise en production, distinguer debug et production, et gérer en toute sécurité les clés de licence et les secrets.
- LectureSécurité et préparation au déploiement · 10 min
Authentification et autorisation à un niveau junior, journalisation sûre, cibles de déploiement et liste de contrôle obligatoire avant mise en production.
- Leçon vidéoPassez en revue un package de déploiement Wisej.NET · 5 min
Regardez une revue de déploiement maîtrisée prendre forme — une liste de contrôle de mise en production, le choix de l’environnement et de la cible, une revue réservée à certains rôles, une gestion sûre des secrets, un journal de dépannage et un état du package qui passe à prêt. Directement ici, dans le lecteur.
Transcription de la narration
Nous examinerons l’application avant de la conditionner pour sa publication. La configuration, les secrets, la journalisation et les autorisations nécessitent chacun une vérification explicite. Le workflow de publication utilisera ces vérifications pour décider si le package est prêt, tout en gardant les détails confidentiels hors des messages destinés aux utilisateurs.
Utilisez l'écran de révision pour recueillir des preuves avant la publication. Les contrôles de configuration, de sécurité et de déploiement appartiennent à un processus reproductible, de sorte que la préparation dépend des contrôles effectués plutôt que d'une impression rassurante.
Enregistrez d'abord l'environnement, la cible d'hébergement, la version et le réviseur. Ces détails identifient exactement ce qui est examiné ; une liste de contrôle complétée pour un environnement ne couvre pas automatiquement une cible de version différente.
Effectuez les vérifications de configuration requises séparément des notes facultatives. Une note peut expliquer une exception, mais elle ne doit pas faire disparaître une vérification requise manquante de la décision de préparation.
Gardez les secrets et les exceptions détaillées hors de l’écran de révision. Affichez un résumé sécurisé et laissez les détails du diagnostic dans les journaux du serveur, afin que le package de révision puisse être partagé sans exposer les informations d'identification.
Séparez l’état de préparation de l’autorisation. Les vérifications requises déterminent si la révision est terminée, tandis qu'une vérification du rôle détermine qui peut créer le package. La réussite de la liste de contrôle n'accorde pas à l'utilisateur une autorité supplémentaire.
Complétez les éléments requis restants et regardez le décompte atteindre neuf sur neuf. Le statut passe à Prêt pour révision. Cela signifie que la liste de contrôle est complète et non que le déploiement a déjà eu lieu.
Créez le package de révision et inspectez son résumé, y compris les problèmes connus et les informations de restauration. Un transfert utile indique au réviseur ce qui est prêt, ce qui reste incertain et comment récupérer en cas d'échec de la publication.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 9 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Checklist de revue du déploiement · 35 min
Objectif: Un écran de revue de déploiement maîtrisée : une liste de contrôle de mise en production avec éléments obligatoires/facultatifs, le choix de l’environnement et de la cible, une action de revue réservée à certains rôles et appuyée par un contrôle côté serveur, des secrets lus depuis une configuration sécurisée, un journal de dépannage horodaté et un Package Status qui ne passe à prêt que lorsque toutes les vérifications obligatoires sont validées.
Module 10: Projet de synthèse — application Mini Helpdesk
Le projet de synthèse de Wisej.NET Foundations. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas du projet de synthèse, réussissez la vérification finale des connaissances, puis construisez le mini-helpdesk qui réunit tout le cours.
- LectureLe projet de synthèse · 9 min
Ce que doit contenir le mini-helpdesk du projet de synthèse — navigation, CRUD, boîtes de dialogue, validation, finition du thème — et comment ses éléments s’articulent.
- LectureCode lisible et revue par les pairs · 9 min
Les habitudes de développeur qui gardent le projet de synthèse lisible, et les points de la revue de code par les pairs sur lesquels votre projet est évalué.
- Leçon vidéoConstruisez le mini-helpdesk Wisej.NET du projet de synthèse · 5 min
Regardez le projet de synthèse prendre forme — un shell de navigation, le CRUD des tickets avec une DataGridView et des boîtes de dialogue, une validation via un service, un thème soigné et des notes d’architecture/de revue/de déploiement. Directement ici, dans le lecteur.
Transcription de la narration
Module dix. Créez le mini service d'assistance Wisej.NET. Ce projet final rassemble le cours en une seule application. Nous suivrons sa navigation, le flux de travail des tickets et les écrans de support, puis examinerons ce qui rend le projet prêt à être examiné et déployé.
Commencez par l’application terminée et suivez son shell de navigation. Les exemples de cours distincts partagent désormais une seule présentation, afin que les utilisateurs puissent passer d'une fonctionnalité à l'autre sans apprendre à chaque fois un nouveau modèle de navigation.
Suivez les tickets, les clients et les tâches à travers leurs principales interactions. Les grilles présentent les enregistrements, les boîtes de dialogue collectent les modifications et les tâches en arrière-plan rendent compte de la progression. Après chaque action, vérifiez que le résultat visible explique ce qui s’est réellement passé.
Suivez un changement de ticket à travers ses responsabilités. La boîte de dialogue valide la saisie, TicketService gère l'opération et la grille présente le résultat. Des étiquettes et des messages d'état cohérents relient ces étapes pour l'utilisateur.
Utilisez le déploiement et l'architecture pour expliquer l'application au-delà de ses écrans. Passez en revue la configuration, la sécurité et la journalisation, puis tracez les données via la couche de service. Une démonstration de travail doit également rendre son organisation compréhensible.
Terminez avec la révision du code et les étapes suivantes. Vérifiez les noms pertinents et les responsabilités claires, puis enregistrez le travail de production restant. Le projet final démontre une application fonctionnelle tout en rendant explicites les travaux inachevés et les décisions de conception.
- LectureExercice de code avec l’IA · 20 min
Construisez l’exemple WisejTrainingApp de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.
- Quiz de connaissancesVérification des connaissances — Module 10 · 12 min · Note de réussite 80%
- Lab pratiqueLab — Projet de synthèse Mini Helpdesk · 60 min
Objectif: Une application de mini-helpdesk complète : un shell à navigation latérale (Dashboard, Tickets, Architecture, Code Review, Deployment, Next Steps), le CRUD des tickets avec une DataGridView et des boîtes de dialogue Create/Edit réutilisables validées via un TicketService, un thème soigné et cohérent, et des notes d’architecture/de revue/de déploiement — tout le cours démontré dans un seul projet.