2-3 Modèles
Le contrôleur d'évènement ne fait pas grand-chose pour le moment. En effet, il retourne une vue Index
vide.
La vue Index
est habituellement responsable d'afficher une liste de résultats, en l'occurrence des évènements ici.
Pour ce faire, il faut définir ce qu'est un Evenement
. Nous allons retourner une liste d'évènements et pour ce faire, il nous faut des objets.
Cet objet, qui représente une ressource du domaine de l'application, est appelé Modèle (Model
).
Créer un Model
Un modèle est une classe on ne peut plus standard, c'est-à-dire qu'elle n'a pas à hériter d'une autre classe comme un Contrôleur aurait à le faire. Le but est simplement de définir l'objet.
Ces classes sont régulièrement abrégées POCO
pour Plain Old CLR Object
.
CLR
veut lui-même dire Common Language Runtime
.
Bref, un objet standard 😉
Pour créer un modèle, on utilise donc simplement Class/Interface
comme type de fichier.
Clic droit
sur le dossierModels
Add
->Class/Interface
- Nommez la classe
Evenement
Alors que les contrôleurs sont la plupart du temps nommés en utilisant le pluriel, les modèles sont au singulier.
En effet, on cherche à représenter UN objet (Evenement).
Vous devriez maintenant avoir ceci comme modèle:
namespace Snowfall.Web.Mvc.Models;
public class Evenement
{
}
Réfléchir au modèle
Il peut arriver qu'on ne connaisse pas parfaitement ce que l'objet contiendra au final lors de sa création. Par exemple, lorsque nous explorons ou prototypons.
Parfois, nous connaissons avec un peu plus de détails la structure de l'objet. C'est notre cas ici, nous savons qu'un évènement devra minimalement contenir:
- Nom
- Description
- ImagePath
- Date
- Prix
- Capacite
- Ville
Il n'y a pas de mention de Id
puisque nous n'avons pas de base de données de configurée pour le moment.
Construire le modèle
Parfait! Nous avons un fichier pour définir le modèle et nous connaissons plusieurs des attributs qu'il devra contenir.
On peut compléter la classe du modèle:
public class Evenement
{
public string Nom;
public string Description;
public string ImagePath;
public DateTime Date;
public Decimal Prix;
public int Capacite;
public string Ville;
}
Nous avons le squelette de notre modèle, mais si vous observez bien, vous verrez que le compilateur vous renseigne sur des mises en garde du genre:
[CS8618] Non-nullable field 'nom' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
Voyons à la prochaine section comment limiter ces avertissements.