From 7bfe5411b1b95482f2b2fa9832c76e08ed354eaa Mon Sep 17 00:00:00 2001 From: Julien Leicher Date: Wed, 9 Dec 2020 14:08:40 +0100 Subject: [PATCH] start working on reusable bits (#17) --- Apps/Website/Views/Links/Index.cshtml | 4 +- Apps/Website/Views/Links/_LinkItem.cshtml | 3 ++ Apps/Website/Views/_ViewImports.cshtml | 1 + README.md | 48 ++++++++++++++++++++++- 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 Apps/Website/Views/Links/_LinkItem.cshtml diff --git a/Apps/Website/Views/Links/Index.cshtml b/Apps/Website/Views/Links/Index.cshtml index 9396920..6123034 100644 --- a/Apps/Website/Views/Links/Index.cshtml +++ b/Apps/Website/Views/Links/Index.cshtml @@ -9,6 +9,8 @@ \ No newline at end of file diff --git a/Apps/Website/Views/Links/_LinkItem.cshtml b/Apps/Website/Views/Links/_LinkItem.cshtml new file mode 100644 index 0000000..ea83a29 --- /dev/null +++ b/Apps/Website/Views/Links/_LinkItem.cshtml @@ -0,0 +1,3 @@ +@model HN.Application.LinkDTO + +@Model.Url - created at @Model.CreatedAt.ToLocalTime() \ No newline at end of file diff --git a/Apps/Website/Views/_ViewImports.cshtml b/Apps/Website/Views/_ViewImports.cshtml index c23f6ce..09b9215 100644 --- a/Apps/Website/Views/_ViewImports.cshtml +++ b/Apps/Website/Views/_ViewImports.cshtml @@ -1,3 +1,4 @@ @using Website @using Website.Models @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Website \ No newline at end of file diff --git a/README.md b/README.md index b440db4..4bcffb5 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,54 @@ # 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) + +``` + +#### 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") + + // 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 -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 !