Ajouter un modèle à une application de pages Razor dans ASP.NET CoreAdd a model to a Razor Pages app in ASP.NET Core

Par Rick AndersonBy Rick Anderson

Dans cette section, des cours sont ajoutés pour la gestion des films dans une base de données transplateforme SQLite.In this section, classes are added for managing movies in a cross-platform SQLite database. Les applications créées à partir d’un modèle ASP.NET Core utilisent une base de données SQLite.Apps created from an ASP.NET Core template use a SQLite database. Les catégories de modèles de l’application sont utilisées avec Entity Framework Core (EF Core) (SQLite EF Core Database Provider) pour travailler avec la base de données.The app's model classes are used with Entity Framework Core (EF Core) (SQLite EF Core Database Provider) to work with the database. EF Core est un framework de mappage relationnel d’objets qui simplifie l’accès aux données.EF Core is an object-relational mapping (ORM) framework that simplifies data access.

Les classes de modèle portent le nom de classes OCT (« Objet CLR Traditionnel »), car elles n’ont pas de dépendances envers EF Core.The model classes are known as POCO classes (from "plain-old CLR objects") because they don't have any dependency on EF Core. Elles définissent les propriétés des données stockées dans la base de données.They define the properties of the data that are stored in the database.

Ajouter un modèle de donnéesAdd a data model

Cliquez avec le bouton droit sur le projet RazorPagesMovie > Ajouter > Nouveau dossier.Right-click the RazorPagesMovie project > Add > New Folder. Nommez le dossier Models.Name the folder Models.

Cliquez avec le bouton droit sur le dossier Models.Right click the Models folder. Sélectionnez Ajouter > la classe.Select Add > Class. Nommez la classe Movie.Name the class Movie.

Ajoutez les propriétés suivantes à la classe Movie :Add the following properties to the Movie class:

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

La classe Movie contient :The Movie class contains:

  • Le champ ID est requis par la base de données pour la clé primaire.The ID field is required by the database for the primary key.

  • [DataType(DataType.Date)]: L’attribut DataType spécifie le type de données (Date).[DataType(DataType.Date)]: The DataType attribute specifies the type of the data (Date). Avec cet attribut :With this attribute:

    • L’utilisateur n’est pas obligé d’entrer les informations de temps dans le champ de date.The user is not required to enter time information in the date field.
    • Seule la date est affichée, pas les informations de temps.Only the date is displayed, not time information.

Les DataAnnotations sont traitées dans un prochain didacticiel.DataAnnotations are covered in a later tutorial.

Générez le projet pour vérifier qu’il n’y a pas d’erreur de compilation.Build the project to verify there are no compilation errors.

Générer automatiquement le modèle de filmScaffold the movie model

Dans cette section, le modèle de film est généré automatiquement.In this section, the movie model is scaffolded. Autrement dit, l’outil de génération de modèles automatique génère des pages pour les opérations de création, de lecture, de mise à jour et de suppression (CRUD) pour le modèle de film.That is, the scaffolding tool produces pages for Create, Read, Update, and Delete (CRUD) operations for the movie model.

Créer un dossier Pages/Movies :Create a Pages/Movies folder:

  • Cliquez avec le bouton droit sur le dossier Pages > Ajouter > Nouveau dossier.Right click on the Pages folder > Add > New Folder.
  • Nommez le dossier Movies.Name the folder Movies

Cliquez avec le bouton droit sur le dossier Pages/Movies > Ajouter > Nouvel élément généré automatiquement.Right click on the Pages/Movies folder > Add > New Scaffolded Item.

Image illustrant les instructions précédentes.

Dans la boîte de dialogue Ajouter un modèle automatique, sélectionnez Razor Pages avec Entity Framework (CRUD) > Ajouter.In the Add Scaffold dialog, select Razor Pages using Entity Framework (CRUD) > Add.

Image illustrant les instructions précédentes.

Renseignez la boîte de dialogue Pages Razor avec Entity Framework (CRUD) :Complete the Add Razor Pages using Entity Framework (CRUD) dialog:

  • Dans la liste déroulante Classe de modèle, sélectionnez Film (RazorPagesMovie.Models).In the Model class drop down, select Movie (RazorPagesMovie.Models).
  • Dans la ligne Classe du contexte de données, sélectionnez le signe (plus) + et changez le nom généré de RazorPagesMovie.Models.RazorPagesMovieContext en RazorPagesMovie.Data.RazorPagesMovieContext.In the Data context class row, select the + (plus) sign and change the generated name from RazorPagesMovie.Models.RazorPagesMovieContext to RazorPagesMovie.Data.RazorPagesMovieContext. Cette modification n'est pas requise.This change is not required. Elle crée la classe de contexte de base de données avec l’espace de noms correct.It creates the database context class with the correct namespace.
  • Sélectionnez Ajouter.Select Add.

Image illustrant les instructions précédentes.

Le fichier appsettings.json est mis à jour avec la chaîne de connexion utilisée pour se connecter à une base de données locale.The appsettings.json file is updated with the connection string used to connect to a local database.

Fichiers créésFiles created

Le processus de génération de modèles automatique crée et met à jour les fichiers suivants :The scaffold process creates and updates the following files:

  • Pages/Movies : Create, Delete, Details, Edit, Index.Pages/Movies: Create, Delete, Details, Edit, and Index.
  • Data/RazorPagesMovieContext.csData/RazorPagesMovieContext.cs

Mis à jourUpdated

  • Startup.csStartup.cs

Les fichiers créés et mis à jour sont expliqués dans la section suivante.The created and updated files are explained in the next section.

Migration initialeInitial migration

Dans cette section, la console du gestionnaire de package est utilisée pour :In this section, the Package Manager Console (PMC) is used to:

  • Ajoutez une migration initiale.Add an initial migration.
  • Mettez à jour la base de données avec la migration initiale.Update the database with the initial migration.

Dans le menu Outils, sélectionnez Gestionnaire de package NuGet > Console du Gestionnaire de package.From the Tools menu, select NuGet Package Manager > Package Manager Console.

Menu Console du Gestionnaire de package

Dans la console du gestionnaire de package, entrez les commandes suivantes :In the PMC, enter the following commands:

Add-Migration InitialCreate
Update-Database

Les commandes précédentes génèrent l’avertissement suivant : « Aucun type n’a été spécifié pour la colonne décimale 'Price' sur le type d’entité 'Movie'.The preceding commands generate the following warning: "No type was specified for the decimal column 'Price' on entity type 'Movie'. Les valeurs sont tronquées en mode silencieux si elles ne sont pas compatibles avec la précision et l’échelle par défaut.This will cause values to be silently truncated if they do not fit in the default precision and scale. Spécifiez explicitement le type de colonne SQL Server capable d’accueillir toutes les valeurs en utilisant 'HasColumnType()'. »Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'."

Vous pouvez ignorer cet avertissement, il sera corrigé dans un prochain tutoriel.You can ignore that warning, it will be fixed in a later tutorial.

La commande de migrations génère du code pour créer le schéma initial de base de données.The migrations command generates code to create the initial database schema. Le schéma est basé sur DbContextle modèle spécifié dans .The schema is based on the model specified in DbContext. L’argument InitialCreate est utilisé pour nommer les migrations.The InitialCreate argument is used to name the migrations. Vous pouvez utiliser n’importe quel nom, mais par convention, un nom décrivant la migration est sélectionné.Any name can be used, but by convention a name is selected that describes the migration.

La update commande Up exécute la méthode dans les migrations qui n’ont pas été appliquées.The update command runs the Up method in migrations that have not been applied. Dans ce update cas, Up exécute la méthode dans les migrations /<délai>_InitialCreate.cs fichier, qui crée la base de données.In this case, update runs the Up method in Migrations/<time-stamp>_InitialCreate.cs file, which creates the database.

Examiner le contexte inscrit avec l’injection de dépendancesExamine the context registered with dependency injection

ASP.NET Core comprend l’injection de dépendances.ASP.NET Core is built with dependency injection. Des services (tels que le contexte de base de données EF Core) sont inscrits avec l’injection de dépendances au démarrage de l’application.Services (such as the EF Core DB context) are registered with dependency injection during application startup. Ces services sont affectés aux composants qui les nécessitent (par exemple les Pages Razor) par le biais de paramètres de constructeur.Components that require these services (such as Razor Pages) are provided these services via constructor parameters. Le code du constructeur qui obtient une instance de contexte de base de données est indiqué plus loin dans le tutoriel.The constructor code that gets a DB context instance is shown later in the tutorial.

L’outil de génération de modèles automatique a créé automatiquement un contexte de base de données et l’a inscrit dans le conteneur d’injection de dépendances.The scaffolding tool automatically created a DB context and registered it with the dependency injection container.

Examinez la méthode Startup.ConfigureServices.Examine the Startup.ConfigureServices method. La ligne en surbrillance a été ajoutée par l’outil de génération de modèles automatique :The highlighted line was added by the scaffolder:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext coordonne les fonctionnalités d’EF Core (Create, Read, Update, Delete, etc.) pour le modèle Movie.The RazorPagesMovieContext coordinates EF Core functionality (Create, Read, Update, Delete, etc.) for the Movie model. Le contexte de données (RazorPagesMovieContext) est dérivé de Microsoft.EntityFrameworkCore.DbContext.The data context (RazorPagesMovieContext) is derived from Microsoft.EntityFrameworkCore.DbContext. Il spécifie les entités qui sont incluses dans le modèle de données.The data context specifies which entities are included in the data model.

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Models
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

Le code précédent crée une propriété DbSet<Movie> pour le jeu d’entités.The preceding code creates a DbSet<Movie> property for the entity set. Dans la terminologie Entity Framework, un jeu d’entités correspond généralement à une table de base de données.In Entity Framework terminology, an entity set typically corresponds to a database table. Une entité correspond à une ligne dans la table.An entity corresponds to a row in the table.

Le nom de la chaîne de connexion est transmis au contexte en appelant une méthode sur un objet DbContextOptions.The name of the connection string is passed in to the context by calling a method on a DbContextOptions object. Pour le développement local, le système de configuration ASP.NET Core lit la chaîne de connexion à partir du fichier appsettings.json.For local development, the ASP.NET Core configuration system reads the connection string from the appsettings.json file.

Test de l'applicationTest the app

  • Exécutez l’application et ajoutez /Movies à l’URL dans le navigateur (http://localhost:port/movies).Run the app and append /Movies to the URL in the browser (http://localhost:port/movies).

Si vous obtenez cette erreur :If you get the error:

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

Vous avez manqué l’étape des migrations.You missed the migrations step.

  • Testez le lien Créer.Test the Create link.

    Create page

    Notes

    Vous ne pourrez peut-être pas entrer de virgules décimales dans le champ Price.You may not be able to enter decimal commas in the Price field. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que « Anglais » qui utilisent une virgule (« , ») comme décimale et des formats de date autres que le format « Anglais (États-Unis »), l’application doit être localisée.To support jQuery validation for non-English locales that use a comma (",") for a decimal point and for non US-English date formats, the app must be globalized. Pour obtenir des instructions sur la localisation, consultez ce problème GitHub.For globalization instructions, see this GitHub issue.

  • Testez les liens Edit, Details et Delete.Test the Edit, Details, and Delete links.

Le prochain didacticiel décrit les fichiers créés par la génération de modèles automatique.The next tutorial explains the files created by scaffolding.

Ressources supplémentairesAdditional resources

Dans cette section, des cours sont ajoutés pour la gestion des films dans une base de données transplateforme SQLite.In this section, classes are added for managing movies in a cross-platform SQLite database. Les applications créées à partir d’un modèle ASP.NET Core utilisent une base de données SQLite.Apps created from an ASP.NET Core template use a SQLite database. Les catégories de modèles de l’application sont utilisées avec Entity Framework Core (EF Core) (SQLite EF Core Database Provider) pour travailler avec la base de données.The app's model classes are used with Entity Framework Core (EF Core) (SQLite EF Core Database Provider) to work with the database. EF Core est un framework de mappage relationnel d’objets qui simplifie l’accès aux données.EF Core is an object-relational mapping (ORM) framework that simplifies data access.

Les classes de modèle portent le nom de classes OCT (« Objet CLR Traditionnel »), car elles n’ont pas de dépendances envers EF Core.The model classes are known as POCO classes (from "plain-old CLR objects") because they don't have any dependency on EF Core. Elles définissent les propriétés des données stockées dans la base de données.They define the properties of the data that are stored in the database.

Ajouter un modèle de donnéesAdd a data model

Cliquez avec le bouton droit sur le projet RazorPagesMovie > Ajouter > Nouveau dossier.Right-click the RazorPagesMovie project > Add > New Folder. Nommez le dossier Models.Name the folder Models.

Cliquez avec le bouton droit sur le dossier Models.Right click the Models folder. Sélectionnez Ajouter > la classe.Select Add > Class. Nommez la classe Movie.Name the class Movie.

Ajoutez les propriétés suivantes à la classe Movie :Add the following properties to the Movie class:

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

La classe Movie contient :The Movie class contains:

  • Le champ ID est requis par la base de données pour la clé primaire.The ID field is required by the database for the primary key.

  • [DataType(DataType.Date)]: L’attribut DataType spécifie le type de données (Date).[DataType(DataType.Date)]: The DataType attribute specifies the type of the data (Date). Avec cet attribut :With this attribute:

    • L’utilisateur n’est pas obligé d’entrer les informations de temps dans le champ de date.The user is not required to enter time information in the date field.
    • Seule la date est affichée, pas les informations de temps.Only the date is displayed, not time information.

Les DataAnnotations sont traitées dans un prochain didacticiel.DataAnnotations are covered in a later tutorial.

Générez le projet pour vérifier qu’il n’y a pas d’erreur de compilation.Build the project to verify there are no compilation errors.

Générer automatiquement le modèle de filmScaffold the movie model

Dans cette section, le modèle de film est généré automatiquement.In this section, the movie model is scaffolded. Autrement dit, l’outil de génération de modèles automatique génère des pages pour les opérations de création, de lecture, de mise à jour et de suppression (CRUD) pour le modèle de film.That is, the scaffolding tool produces pages for Create, Read, Update, and Delete (CRUD) operations for the movie model.

Créer un dossier Pages/Movies :Create a Pages/Movies folder:

  • Cliquez avec le bouton droit sur le dossier Pages > Ajouter > Nouveau dossier.Right click on the Pages folder > Add > New Folder.
  • Nommez le dossier Movies.Name the folder Movies

Cliquez avec le bouton droit sur le dossier Pages/Movies > Ajouter > Nouvel élément généré automatiquement.Right click on the Pages/Movies folder > Add > New Scaffolded Item.

Image illustrant les instructions précédentes.

Dans la boîte de dialogue Ajouter un modèle automatique, sélectionnez Razor Pages avec Entity Framework (CRUD) > Ajouter.In the Add Scaffold dialog, select Razor Pages using Entity Framework (CRUD) > Add.

Image illustrant les instructions précédentes.

Renseignez la boîte de dialogue Pages Razor avec Entity Framework (CRUD) :Complete the Add Razor Pages using Entity Framework (CRUD) dialog:

  • Dans la liste déroulante Classe de modèle, sélectionnez Film (RazorPagesMovie.Models).In the Model class drop down, select Movie (RazorPagesMovie.Models).
  • Dans la ligne Classe du contexte de données, sélectionnez le signe (plus) + et acceptez le nom généré RazorPagesMovie.Models.RazorPagesMovieContext.In the Data context class row, select the + (plus) sign and accept the generated name RazorPagesMovie.Models.RazorPagesMovieContext.
  • Sélectionnez Ajouter.Select Add.

Image illustrant les instructions précédentes.

Le fichier appsettings.json est mis à jour avec la chaîne de connexion utilisée pour se connecter à une base de données locale.The appsettings.json file is updated with the connection string used to connect to a local database.

Le processus de génération de modèles automatique crée et met à jour les fichiers suivants :The scaffold process creates and updates the following files:

Fichiers créésFiles created

  • Pages/Movies : Create, Delete, Details, Edit, Index.Pages/Movies: Create, Delete, Details, Edit, and Index.
  • Data/RazorPagesMovieContext.csData/RazorPagesMovieContext.cs

Fichier mis à jourFile updated

  • Startup.csStartup.cs

Les fichiers créés et mis à jour sont expliqués dans la section suivante.The created and updated files are explained in the next section.

Migration initialeInitial migration

Dans cette section, la console du gestionnaire de package est utilisée pour :In this section, the Package Manager Console (PMC) is used to:

  • Ajoutez une migration initiale.Add an initial migration.
  • Mettez à jour la base de données avec la migration initiale.Update the database with the initial migration.

Dans le menu Outils, sélectionnez Gestionnaire de package NuGet > Console du Gestionnaire de package.From the Tools menu, select NuGet Package Manager > Package Manager Console.

Menu Console du Gestionnaire de package

Dans la console du gestionnaire de package, entrez les commandes suivantes :In the PMC, enter the following commands:

Add-Migration Initial
Update-Database

La commande Add-Migration génère du code pour créer le schéma de base de données initial.The Add-Migration command generates code to create the initial database schema. Le schéma est basé sur le modèle spécifié dans DbContext (dans le fichier RazorPagesMovieContext.cs).The schema is based on the model specified in the DbContext (In the RazorPagesMovieContext.cs file). L’argument InitialCreate est utilisé pour nommer la migration.The InitialCreate argument is used to name the migration. Vous pouvez utiliser n’importe quel nom, mais par convention, un nom décrivant la migration est utilisé.Any name can be used, but by convention a name that describes the migration is used. Pour plus d’informations, consultez Tutorial: Utilisation de la fonction migrations - ASP.NET MVC avec EF Core.For more information, see Tutorial: Utilisation de la fonction migrations - ASP.NET MVC avec EF Core.

La commande Update-Database exécute la méthode Up dans le fichier Migrations/<horodatage>_InitialCreate.cs.The Update-Database command runs the Up method in the Migrations/<time-stamp>_InitialCreate.cs file. La méthode Up crée la base de données.The Up method creates the database.

Notes

Les commandes précédentes génèrent l’avertissement suivant : «Aucun type n’a été spécifié pour la colonne décimale 'Price' sur le type d’entité 'Movie'. Cela entraînera des valeurs silencieusement tronquées si elles ne rentrent pas dans la précision et l’échelle par défaut. Spécifier explicitement le type de colonne de serveur SQL qui peut accueillir toutes les valeurs à l’aide de 'HasColumnType'. Vous pouvez ignorer cet avertissement, il sera fixé dans un tutoriel ultérieur.The preceding commands generate the following warning: "No type was specified for the decimal column 'Price' on entity type 'Movie'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'." You can ignore that warning, it will be fixed in a later tutorial.

Examiner le contexte inscrit avec l’injection de dépendancesExamine the context registered with dependency injection

ASP.NET Core comprend l’injection de dépendances.ASP.NET Core is built with dependency injection. Des services (tels que le contexte de base de données EF Core) sont inscrits avec l’injection de dépendances au démarrage de l’application.Services (such as the EF Core DB context) are registered with dependency injection during application startup. Ces services sont affectés aux composants qui les nécessitent (par exemple les Pages Razor) par le biais de paramètres de constructeur.Components that require these services (such as Razor Pages) are provided these services via constructor parameters. Le code du constructeur qui obtient une instance de contexte de base de données est indiqué plus loin dans le tutoriel.The constructor code that gets a DB context instance is shown later in the tutorial.

L’outil de génération de modèles automatique a créé automatiquement un contexte de base de données et l’a inscrit dans le conteneur d’injection de dépendances.The scaffolding tool automatically created a DB context and registered it with the dependency injection container.

Examinez la méthode Startup.ConfigureServices.Examine the Startup.ConfigureServices method. La ligne en surbrillance a été ajoutée par l’outil de génération de modèles automatique :The highlighted line was added by the scaffolder:

// This method gets called by the runtime. 
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is 
        // needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(
          Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext coordonne les fonctionnalités d’EF Core (Create, Read, Update, Delete, etc.) pour le modèle Movie.The RazorPagesMovieContext coordinates EF Core functionality (Create, Read, Update, Delete, etc.) for the Movie model. Le contexte de données (RazorPagesMovieContext) est dérivé de Microsoft.EntityFrameworkCore.DbContext.The data context (RazorPagesMovieContext) is derived from Microsoft.EntityFrameworkCore.DbContext. Il spécifie les entités qui sont incluses dans le modèle de données.The data context specifies which entities are included in the data model.

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Models
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

Le code précédent crée une propriété DbSet<Movie> pour le jeu d’entités.The preceding code creates a DbSet<Movie> property for the entity set. Dans la terminologie Entity Framework, un jeu d’entités correspond généralement à une table de base de données.In Entity Framework terminology, an entity set typically corresponds to a database table. Une entité correspond à une ligne dans la table.An entity corresponds to a row in the table.

Le nom de la chaîne de connexion est transmis au contexte en appelant une méthode sur un objet DbContextOptions.The name of the connection string is passed in to the context by calling a method on a DbContextOptions object. Pour le développement local, le système de configuration ASP.NET Core lit la chaîne de connexion à partir du fichier appsettings.json.For local development, the ASP.NET Core configuration system reads the connection string from the appsettings.json file.

Test de l'applicationTest the app

  • Exécutez l’application et ajoutez /Movies à l’URL dans le navigateur (http://localhost:port/movies).Run the app and append /Movies to the URL in the browser (http://localhost:port/movies).

Si vous obtenez cette erreur :If you get the error:

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

Vous avez manqué l’étape des migrations.You missed the migrations step.

  • Testez le lien Créer.Test the Create link.

    Create page

    Notes

    Vous ne pourrez peut-être pas entrer de virgules décimales dans le champ Price.You may not be able to enter decimal commas in the Price field. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que « Anglais » qui utilisent une virgule (« , ») comme décimale et des formats de date autres que le format « Anglais (États-Unis »), l’application doit être localisée.To support jQuery validation for non-English locales that use a comma (",") for a decimal point and for non US-English date formats, the app must be globalized. Pour obtenir des instructions sur la localisation, consultez ce problème GitHub.For globalization instructions, see this GitHub issue.

  • Testez les liens Edit, Details et Delete.Test the Edit, Details, and Delete links.

Le prochain didacticiel décrit les fichiers créés par la génération de modèles automatique.The next tutorial explains the files created by scaffolding.

Ressources supplémentairesAdditional resources