Rencontre 11
Contenu
- Présentation de Database Diagrams dans SQL Server Management Studio
Details
- Présentation du laboratoire de révision
- Explication d'un contrôleur et de ses vues générées
- Révision
Ressources et documentation:
Activités de la séance
Laboratoires
- L'assignation 10XX-S11_Lab1_Revision dans GitHub Classroom est partagé sur le Teams du cours
Théorie:
Travail personnel:
- Terminer le laboratoire de révision
- Travail sur le TP1
Révision
Details
Views et PartialViews
public IActionResult UneAction()
{
Zombie z = new Zombie(){
Name = "Nom du zombie"
};
// Par défaut, la vue qui est construite porte le nom de l'action et se trouve dans le répertoire qui a le nom du contrôleur
return new View(z);
// Il est possible de retourner une vue par son nom
// return new View("AutreNom", z);
}
Le modèle d'une vue c'est l'équivalent du paramètre d'une fonction et il est passé dans le contrôleur
@model Zombie
<span>@Model.Name</span>
OU
@model Zombie
<span>@Html.DisplayFor(model => model.Name)</span>
Génère simplement le html
<span>Puant</span>
Une vue partielle peut également avoir son propre modèle et on peut fournir la valeur avec le paramètre model
<partial name="_NomDeLaVue" model="valeur"/>
ViewModels
On nomme ViewModels une classe que l'on utilise spécifiquement pour afficher une vue.
Elle contient généralement:
- D'autres données
- Des statistiques
- Des listes pour faire des sélections
- L'état de la page
- La valeur courrante d'un champ de recherche
- La pagination lorsque l'on peut voir une grande quantité de données
- D'autres options
TagHelper et asp-for
Le mot "For" utilisé dans les fonctions suivantes fait référence aux propriétés du modèle fournit:
@model X
Regarder le html généré par les choses suivantes:
@Html.DisplayNameFor(model => model.Name)
@Html.DisplayFor(model => model.Name)
asp-for="Name"
asp-validation-for="Name"
EntityFramework (EF)
- Propriétés de navigations
- Relations
- 1 à N
- N à N
- 1 à 1
Annotations
Exemples:
[StringLength(100, MinimumLength = 20)]
[Range(10,35)]
[Required(ErrorMessage = "EmailRequired")]
Révision du ?
Pour les propriétés de navigations avec une clé étrangère, il doit être sur les deux ou pas du tout
public class Joueur
{
public int Id {get; set;}
// Relation obligatoire 1..1
public int EquipeId {get; set;}
public Equipe Equipe {get; set;}
}
public class Joueur
{
public int Id {get; set;}
// Relation optionnelle 0..1
public int? EquipeId {get; set;}
public Equipe? Equipe {get; set;}
}
Validations
ModelState.IsValid
Comprendre le retour de View vs RedirectToAction!
Comprende la validation client VS serveur VS BD
Asynchrone
Comment transformer un méthode pour qu'elle soit asynchrone et puisse utiliser des méthodes asynchrones
3 choses:
- Rendre la méthode async
- Changer le type de retour pour une Task<X> où X est le type qui était retourné
- Ajouter un await devant les appels à des méthodes asynchrones comme ToListAsync()