Aller au contenu principal

Diagrammes BD et laboratoire de révision

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​

Théorie:​

Laboratoire​

GitHub FORK Laboratoire​

Travail personnel:​

  • Terminer le laboratoire de révision
  • Travail sur le TP2

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 courante d'un champ de recherche
    • La pagination lorsque l'on veut 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 fourni:

@model X

Regardez 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 navigation
  • 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 navigation 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!

Comprendre la validation client VS serveur VS BD

Asynchrone​

Comment transformer une 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é (ou Task pour un void)
  • Ajouter un await devant les appels à des méthodes asynchrones comme ToListAsync()