start working on reusable bits #17

Merged
jleicher merged 1 commits from reusable-bits into master 2020-12-09 14:08:41 +01:00
4 changed files with 54 additions and 2 deletions
Showing only changes of commit 00547c5313 - Show all commits

View File

@ -9,6 +9,8 @@
<ul> <ul>
@foreach (var link in Model) @foreach (var link in Model)
{ {
<li>@link.Url created at @link.CreatedAt.ToLocalTime()</li> <li>
<partial name="_LinkItem" model="@link" />
</li>
} }
</ul> </ul>

View File

@ -0,0 +1,3 @@
@model HN.Application.LinkDTO
<a asp-action="Show" asp-controller="Links" asp-route-id="@Model.Id">@Model.Url - created at @Model.CreatedAt.ToLocalTime()</a>

View File

@ -1,3 +1,4 @@
@using Website @using Website
@using Website.Models @using Website.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Website

View File

@ -1,8 +1,54 @@
# hn-dotnet : un clone d'Hacker News en dotnet ! # hn-dotnet : un clone d'Hacker News en dotnet !
Le but est de réaliser de A à Z une application Web imitant le fonctionnement de Hacker News en abordant des bonnes pratiques de développement en .Net.
## Ressources utiles
- https://aspnetcore.readthedocs.io/en/stable/mvc/index.html
- https://andrewlock.net/an-introduction-to-viewcomponents-a-login-status-view-component/
- https://stackoverflow.com/a/47011478
- https://stackoverflow.com/a/34291650
## Commençer par le domaine !
Mise en place de la librairie du domaine qui contiendra nos objets métiers.
## Notre premier cas d'utilisation
Mise en place de la couche applicative avec `MediatR` et implémentation du premier cas d'utilisation.
## Le site internet en MVC
### Factoriser des éléments d'interface
#### Partial views
Simple fichier permettant de partager du markup sans logique.
```razor
@await Html.PartialAsync("_Partial", model)
<partial name="_Partial" model="@Model">
```
#### View components
Permet de partager du rendu ET de la logique. Plusieurs manière de le déclarer (étendre `ViewComponent`, fichier terminant par `ViewComponent` ou décorateur associé).
```razor
@await Component.InvokeAsync("VComponent")
<component type="@typeof(VComponent)" param-arg="@Model" />
<vc:VComponent arg="@Model"> // Nécessite d'ajouter les tag helpers et de builder avec (dans le ViewImports) `@addTagHelper *, YourAssembly`
```
#### Razor components (rendu statique)
Proche de ce qui est fait en Blazor mais sans la partie interactivité. Possibilité de les afficher sans utiliser Blazor du tout mais plusieurs concession, notamment plus de TagHelper type `asp-action`...
#### Tag Helpers
## Démarche ## Démarche
On crée un fichier solution avec `dotnet new sln`. On crée un fichier solution avec `dotnet new sln`. On pourra alimenter ce fichier sln avec la commande `dotnet sln add DirProjet`.
Commençons par le commencement, les building blocks, des classes pour nous faciliter la vie ! Commençons par le commencement, les building blocks, des classes pour nous faciliter la vie !