Événements
Championnats du monde Power BI DataViz
14 févr., 16 h - 31 mars, 16 h
Avec 4 chances d’entrer, vous pourriez gagner un package de conférence et le rendre à la Live Grand Finale à Las Vegas
En savoir plusCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Par Alexander Wicht
Les modèles d’affichage et d’éditeur spécifient la disposition des types personnalisés dans l’interface utilisateur. Considérez le modèle Address
suivant :
public class Address
{
public int Id { get; set; }
public string FirstName { get; set; } = null!;
public string MiddleName { get; set; } = null!;
public string LastName { get; set; } = null!;
public string Street { get; set; } = null!;
public string City { get; set; } = null!;
public string State { get; set; } = null!;
public string Zipcode { get; set; } = null!;
}
Un projet qui génère automatiquement le Address
modèle affiche Address
dans le formulaire suivant :
Un site web peut utiliser un modèle d’affichage pour présenter Address
dans le format standard :
Les modèles d’affichage et d’éditeur peuvent également réduire les coûts de duplication et de maintenance de code. Prenons l’exemple d’un site web qui affiche le modèle Address
sur 20 pages différentes. Si le modèle Address
change, les 20 pages devront toutes être mises à jour. Si un modèle d’affichage est utilisé pour le modèle Address
, seul le modèle d’affichage devra être mis à jour. Par exemple, le modèle Address
peut être mis à jour pour inclure le pays ou la région.
Les Tag Helpers constituent une solution de remplacement qui permet au code côté serveur de participer à la création et au rendu des éléments HTML dans les fichiers Razor. Pour plus d’informations, consultez Comparaison des Tag Helpers aux HTML Helpers.
Les modèles DisplayTemplates
personnalisent l’affichage des champs de modèle ou créent une couche d’abstraction entre les valeurs de modèle et leur affichage.
Un DisplayTemplate
est un fichier Razor placé dans le dossier DisplayTemplates
:
Pages/Shared/DisplayTemplates
.Views/Shared/DisplayTemplates
ou le dossier Views/ControllerName/DisplayTemplates
. Les modèles d’affichage contenus dans Views/Shared/DisplayTemplates
sont utilisés par tous les contrôleurs de l’application. Les modèles d’affichage contenus dans le dossier Views/ControllerName/DisplayTemplates
sont résolus uniquement par le contrôleur ControllerName
.Par convention, le fichier DisplayTemplate
prend le nom du type à afficher. Le modèle Address.cshtml
utilisé dans cet exemple :
@model Address
<dl>
<dd>@Model.FirstName @Model.MiddleName @Model.LastName</dd>
<dd>@Model.Street</dd>
<dd>@Model.City @Model.State @Model.Zipcode</dd>
</dl>
Le moteur d’affichage recherche automatiquement un fichier dans le dossier DisplayTemplates
qui correspond au nom du type. S’il ne trouve pas de modèle correspondant, il a recours aux modèles intégrés.
Le code suivant montre la vue Details du projet généré automatiquement :
@page
@model WebAddress.Pages.Adr.DetailsModel
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<div>
<h4>Address</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.FirstName)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.FirstName)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.MiddleName)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.MiddleName)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.LastName)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.LastName)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.Street)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.Street)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.City)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.City)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.State)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.State)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Address.Zipcode)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address.Zipcode)
</dd>
</dl>
</div>
<div>
<a asp-page="./Edit" asp-route-id="@Model.Address?.Id">Edit</a> |
<a asp-page="./Index">Back to List</a>
</div>
Le code suivant montre la vue Details utilisant le modèle d’affichage Address :
@page
@model WebAddress.Pages.Adr2.DetailsModel
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<div>
<h4>Address DM</h4>
<hr />
<dl class="row">
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address)
</dd>
</dl>
</div>
<div>
<a asp-page="./Edit" asp-route-id="@Model.Address?.Id">Edit</a> |
<a asp-page="./Index">Back to List</a>
</div>
Pour référencer un modèle dont le nom ne correspond pas au nom du type, utilisez le paramètre templateName
dans la méthode DisplayFor. Par exemple, le balisage suivant affiche le modèle Address
avec le modèle AddressShort
:
@page
@model WebAddress.Pages.Adr2.DetailsCCModel
@{
ViewData["Title"] = "Details Short";
}
<h1>Details Short</h1>
<div>
<h4>Address Short</h4>
<hr />
<dl class="row">
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Address,"AddressShort")
</dd>
</dl>
</div>
Utilisez l’une des surcharges DisplayFor disponibles qui exposent le paramètre additionalViewData
pour passer des données d’affichage supplémentaires qui sont fusionnées dans l’instance de Dictionnaire de données d’affichage créée pour le modèle.
Les modèles d’éditeur sont utilisés dans les contrôles de formulaire lorsque le modèle est modifié ou mis à jour.
Un EditorTemplate
est un fichier Razor placé dans le dossier EditorTemplates
:
Pages/Shared/EditorTemplates
.Views/Shared/EditorTemplates
ou le dossier Views/ControllerName/EditorTemplates
.Le balisage suivant montre le Pages/Shared/EditorTemplates/Address.cshtml
utilisé dans l’exemple :
@model Address
<dl>
<dd> Name:
<input asp-for="FirstName" /> <input asp-for="MiddleName" /> <input asp-for="LastName" />
</dd>
<dd> Street:
<input asp-for="Street" />
</dd>
<dd> city/state/zip:
<input asp-for="City" /> <input asp-for="State" /> <input asp-for="Zipcode" />
</dd>
</dl>
Le balisage suivant montre la page Edit.cshtml qui utilise le modèle Pages/Shared/EditorTemplates/Address.cshtml
:
@page
@model WebAddress.Pages.Adr.EditModel
@{
ViewData["Title"] = "Edit";
}
<h1>Edit</h1>
<h4>Address</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Address.Id" />
@Html.EditorFor(model => model.Address)
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-page="./Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Commentaires sur ASP.NET Core
ASP.NET Core est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Championnats du monde Power BI DataViz
14 févr., 16 h - 31 mars, 16 h
Avec 4 chances d’entrer, vous pourriez gagner un package de conférence et le rendre à la Live Grand Finale à Las Vegas
En savoir plus