Modèles de projets

PowerPortalsPro propose deux modèles de projet qui échauffent un portail complet — connectivité, authentification, gestionnaires de sécurité Dataverse, localisation et pages d’identité préconstruites — prêts à fonctionner en quelques minutes. Une application React en page unique (recommandée) et une application web Blazor sont toutes deux disponibles, et les fonctionnalités PowerPortalsPro sont identiques sur les deux. Choisissez la stack front-end qui correspond à votre équipe.

Installation des modèles

Installez le package PowerPortalsPro.AspNetCore.Templates depuis NuGet en utilisant la ligne de commande .NET. Les deux modèles sont inclus dans ce seul paquet :

Choisir un modèle

Une fois installé, créez un projet à partir de la CLI .NET ou de la boîte de dialogue « Nouveau projet » de Visual Studio (cherchez « Power Portals Pro »). Deux modèles sont disponibles — choisissez celui qui correspond à votre pile front-end :

React (recommandé)

Un hôte ASP.NET Core associé à une application React + Vite + TypeScript en une seule page construite sur Fluent UI React. Recommandé pour les nouveaux portails — outils front-end modernes, boucle de développement à rechargement rapide à chaud, et le jeu de composants le plus large.

Blazor

Une application web ASP.NET Core Blazor construite sur Fluent UI Blazor, avec un mode de rendu que vous choisissez à l’étape de l’échafaudage via --interactivity. C’est un excellent choix quand votre équipe travaille principalement en C# et préfère rester entièrement dans la pile d’interface utilisateur .NET.

Recommandé

Les deux modèles exposent les mêmes capacités PowerPortalsPro — grilles, éditeurs, sécurité, localisation et identité. Nous recommandons React pour les nouveaux projets, sauf si votre équipe a une raison précise de rester entièrement C#, auquel cas le modèle Blazor est entièrement pris en charge.

Le modèle React

Le powerportalspro-react modèle génère deux projets qui s’exécutent ensemble :

Modes d’interactivité Blazor

Le modèle Blazor accepte --interactivity Serverégalement , --interactivity WebAssembly, ou --interactivity Auto choisir son mode de rendu (le modèle React est toujours une application à une seule page, donc il n’a pas d’option équivalente). Choisir un mode dès le départ n’affecte que la mise en page générée du projet — PowerPortalsPro lui-même fonctionne correctement sur les trois. Consultez la page Blazor Interactivity pour une comparaison complète.

Conseil

Le --interactivity drapeau correspond à celui du modèle stock dotnet new blazor du même nom, donc tout ce que vous savez déjà sur les modes de rendu Blazor est conservé.

Options de modèles

Les deux modèles exposent dotnet new des options pour que vous puissiez personnaliser le projet généré dès le départ. Passez-les en ligne de commande, ou choisissez-les dans l’écran de création de projet de Visual Studio (et l’interface dotnet new interactive). Les options les plus utiles :

Par exemple, un portail Blazor auto-rendu pour les deux publics, avec connexion Google et traduction automatique Azure :

Conseil

Exécutez dotnet new powerportalspro -h (ou dotnet new powerportalspro-react -h) pour lister chaque option et leurs valeurs par défaut. Dans Visual Studio, ils apparaissent sous forme de cases à cocher et de menus déroulants sur l’écran de création de projet.

Ce qui est inclus

Le modèle génère un projet de portail pleinement fonctionnel avec les éléments suivants :

Comprendre Program.cs

Le Program.cs fichier est l’endroit où tous les services sont enregistrés et où le pipeline d’application est configuré. Voici un aperçu de chaque section :

Modèle React

La solution ci-dessous décrit le modèle Program.csBlazor. L’hébergeur du modèle React enregistre les mêmes services de base — le Dataverse ConnectionOptions, la localisation, les gestionnaires de sécurité et l’email — mais omet l’enregistrement spécifique AddPowerPortalsProWebBlazorFluentUI() à Blazor, sert plutôt le SPA React et expose les points d’authentification via MapAuthEndpoints<PortalUser>() plutôt que MapAdditionalIdentityEndpoints(). AddPowerPortalsProWebServer()

Cache distribué

Le modèle enregistre un cache distribué basé sur la mémoire. En production, remplacez-le par un cache persistant comme Redis ou SQL Server pour de meilleures performances sur plusieurs instances.

Inscription Fluent UI

AddPowerPortalsProWebBlazorFluentUI() enregistre tous les composants Fluent UI Blazor utilisés par les éditeurs, les grids et les composants de mise en page de PowerPortalsPro.

Services serveur

AddPowerPortalsProWebServer() enregistre les services principaux côté serveur, y compris la couche d’accès aux données Dataverse, l’application de la sécurité, le pipeline intercepteur et le chargement de localisation.

Connexion Dataverse

La ConnectionOptions configuration précise comment le portail s’authentifie avec Dataverse. Le modèle utilise l’authentification Client Secret avec des identifiants stockés dans appsettings.json ou User Secrets.

Conseil

Pour les meilleures pratiques de sécurité, stockez vos identifiants dans les Secrets d’utilisateur pendant le développement et Azure Key Vault ou les variables d’environnement en production. Ne confiez jamais de secrets au contrôle de version.

Configuration de localisation

AddLocalizationDirectory registres des répertoires contenant des fichiers JSON de localisation. Par défaut LocalizeAllAvailableTables , est true, donc les étiquettes, noms de colonnes et de vues sont automatiquement extraits de chaque table Dataverse. Régle-le sur false et utilise AddTableToLocalize / AddTablesToLocalize pour restreindre la localisation à une liste explicite.

Options d’identité

Cette IdentityOptions section configure ASP.NET paramètres d’identité principale, comme l’exigence d’une confirmation par e-mail avant la connexion.

Traduction automatique (optionnelle)

Générez le projet pour --IncludeMachineTranslation câbler la traduction automatique pour la page d’administration de la localisation Translate a Caste a Panel. Le modèle ajoute ci-dessous le package du PowerPortalsPro.Web.Server.Translation.* fournisseur choisi et son enregistrement ; choisissez le fournisseur avec --MachineTranslationProvider: Azure (par défaut), DeepL, ou Google. Fournir la clé du fournisseur via les secrets de configuration / utilisateurs sous Azure:Translation:Key, DeepL:Translation:Key, ou Google:Translation:Key pour correspondre.

Conseil

Sans cette option, la page Administration de la localisation fonctionne toujours — la vue d’ensemble du pipeline et les téléchargements par source / fusionnés ne sont pas affectés ; Seul le panneau de traduction reste caché, et l’enregistrement est livré comme un guide commenté pour que vous puissiez l’activer manuellement plus tard.

Enregistrement du gestionnaire de sécurité

Les gestionnaires de permissions sont enregistrés dans le conteneur DI pour contrôler l’accès CRUD pour chaque table. Le modèle inclut des gestionnaires pour le compte (accès complet) et le contact (lecture seule avec des mises à jour basées sur le propriétaire).

Configuration des e-mails

Il EmailServiceOptions configure l’adresse e-mail de l’expéditeur utilisée pour la confirmation de compte et la réinitialisation du mot de passe. Cela est envoyé via le service de messagerie Dataverse.

Authentification Microsoft (optionnelle)

Le modèle inclut un code commenté pour ajouter l’authentification Microsoft Entra ID (Azure AD). Désactivez vos commentaires et configurez votre identifiant client et votre secret pour activer la connexion externe via les comptes Microsoft.

Middleware Pipeline

UsePowerPortalsProWebServer() ajoute le middleware PowerPortalsPro. UseLocalization() permet le système de localisation. MapAdditionalIdentityEndpoints() enregistre le point de connexion basé sur les cookies utilisé par les pages d’identité.

Authentification à deux facteurs (optionnelle)

Le modèle inclut un code commenté pour activer l’authentification à deux facteurs via des codes par email. Annulez le commentaire de l’option AuthenticatorTokenProvider et l’appel AddDefaultTokenProviders() pour l’activer.

Personnalisations courantes

Après avoir structuré le projet, voici les étapes suivantes courantes :