IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les nouveautés de ASP.NET Core 2.0 Preview -
Partie 3 : introduction à Razor Pages, par Hinault Romaric

Le , par Hinault Romaric

0PARTAGES

Ceci est le troisième et dernier billet de cette série. Vous pouvez consulter les billets précédents :





L’utilisation du modèle MVC oblige le développeur à adopter un pattern dans la mise en place de son application. Ce découpage impose l’utilisation de nombreux fichiers. Pour une petite application, l’utilisation du modèle MVC entraine plus d’effort et impose la maitrise d’ASP.NET Core MVC.

Pour les développeurs qui veulent mettre en place de petites applications Web sans avoir à faire face aux contraintes architecturales qu’impose MVC, Razor Pages est désormais offert avec ASP.NET Core 2.0. Razor Pages peut également être pratique pour les débutants ou les développeurs qui ont précédemment utilisé ASP.NET WebForms.

Razor Pages offre un modèle de programmation permettant d’inclure dans un fichier .cshtml du code HTML, CSS, JavaScript et C# pour produire une page Web, sans avoir recours à un contrôleur comme avec MVC.

Razor Pages existait déjà sous ASP.NET. Ce dernier avait été introduit avec l’IDE WebMatrix, sous le nom de WebPages. Toutefois, Razor Pages était disponible séparément tout comme WebForms, MVC et Web API. Dans ASP.NET Core, MVC et WebAPI ont été fusionnés. C’est également le cas avec Razor Pages.


Le package Microsoft.AspNetCore.Mvc permet d’exploiter toutes les fonctionnalités de Razor Pages. Toutefois, elles sont disponibles dans l’espace de nommage suivant :

Microsoft.AspNetCore.Mvc.RazorPages

Après avoir installé ASP.NET Core 2.0 et la préversion de Visual Studio 2017 Update 1, vous verrez un nouveau modèle de projet dans la liste des templates pour Razor Pages :


Si vous ne disposez pas de Visual Studio, le nouveau modèle est également disponible dans les templates des outils de développement pour .NET Core. Pour créer un nouveau projet Razor Pages, il suffit d’utiliser la commande suivante :

Code : Sélectionner tout
Dotnet new razor -n NomProjet

La structure d’une application Razor Pages est très différente de celle d’une application MVC, comme vous pouvez le constater avec la capture ci-dessous :


Nous n’avons pas de dossier Controlleur et non plus de dossier Views. Nous avons juste un dossier Pages, avec des vues Razor.

Un fichier Razor Pages commence avec l’instruction suivante :

Code cshtml : Sélectionner tout
@page

Pour séparer le contenu de présentation de la logique métier. Razor Pages offre l’instruction @functions :

Code cshtml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@page 
  
@functions{ 
  
    public string Message { get; set; } 
  
    public void OnGet() 
    { 
        Message = "Your application description page."; 
    } 
  
} 
  
@{ 
    ViewData["Title"] = "About"; 
} 
<h2>@ViewData["Title"].</h2> 
<h3>@Message</h3> 
  
<p>Use this area to provide additional information.</p>

Le code ci-dessus, avant le rendu de la page va exécuter au préalable la méthode OnGet(). Razor Pages apporte une convention pour exécuter les méthodes (action) en fonction des requêtes HTTP. Ainsi, pour une requête HTTP Get sur une Razor Pages, la fonction OnGet dans le code de cette page sera automatiquement exécutée. Pour une requête Post, la fonction OnPost() sera exécutée.

Pour permettre une meilleure séparation du code, Razor Pages introduit la notion de PageModel. Au lieu d’avoir une seule page About.cshtml, nous aurons également une page About.cshtml.cs, qui va contenir la classe AboutModel, qui hérite de PageModel.
Dans cette page, nous aurons le code-behind de notre page :

Code c# : Sélectionner tout
1
2
3
4
5
6
7
8
9
public class AboutModel : PageModel 
    { 
        public string Message { get; set; } 
  
        public void OnGet() 
        { 
            Message = "Your application description page."; 
        } 
    }

Et le contenu de la page About.cshtml devient ceci :

Code cshtml : Sélectionner tout
1
2
3
4
5
6
7
8
@page 
@model AboutModel 
@{ 
    ViewData["Title"] = "About"; 
} 
<h2>@ViewData["Title"].</h2> 
<h3>@Model.Message</h3> 
<p>Use this area to provide additional information.</p>

Le contenu du fichier Program.cs et Startup.cs reste identique qu’avec un projet MVC. Dans un autre billet consacré uniquement à Razor Pages, je vais présenter de façon plus détaillée cette nouveauté.

Journalisation

Un autre aspect intéressant de ASP.NET Core 2.0 est la configuration de la journalisation. La méthode Configure() de la classe Startup ne prend plus en paramètre un ILoggerFactory pour injecter dans le pipeline HTTP le middleware pour la journalisation.

La configuration de la journalisation se fait dans la méthode CreateDefaultBuilder() qui ajoute les modes Console et Debug. Ce qui est intéressant, c’est l’utilisation du fichier appsettings.json pour la configuration de la journalisation :

Code json : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"Logging": { 
    "IncludeScopes": false, 
    "Debug": { 
      "LogLevel": { 
        "Default": "Warning" 
      } 
    }, 
    "Console": { 
      "LogLevel": { 
        "Default": "Warning" 
      } 
    } 
  } 
}


ASP.NET Core 2.0 Preview apporte plusieurs nouveautés et améliorations assez intéressantes. Je n’ai présenté que celles qui ont le plus attiré mon attention. Je pourrais dans un prochain billet de blog évoquer les autres nouveautés de la plateforme.

Notez qu’il s’agit d’une préversion. De ce fait, avant la sortie de la version stable, l’implémentation de certaines fonctionnalités pourrait changer.

Une erreur dans cette actualité ? Signalez-nous-la !