Aller au contenu principal

Rencontre 11

Contenu

  • Présentation de Database Diagrams dans SQL Server Management Studio
alt text
Details

alt text

  • 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

Contôleur Zombie
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

Vue avec modèle
@model Zombie

<span>@Model.Name</span>

OU

Vue avec modèle et HtmlHelper
@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

Vue partielle
<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

Relation obligatoire
public class Joueur
{
public int Id {get; set;}

// Relation obligatoire 1..1
public int EquipeId {get; set;}
public Equipe Equipe {get; set;}
}
Relation optionnelle
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()