Aller au contenu principal

20-4 Formulaire d'inscription (HTML plain)

Comment crée-t-on un formulaire? L'approche n'est pas tellement différente d'un formulaire HTML bien normal.

Balise form et action

Premièrement, on définit une balise form, avec l'action Create du contrôleur.

Snowfall.Web.Mvc/Views/Comptes/New.cshtml
<div class="row">
<div class="col-md-6 offset-md-3">
<h1 class="mb-3">Créer un compte</h1>

<form asp-controller="Comptes" asp-action="Create">

</form>
</div>
</div>

Ajout des input et du bouton submit

Commençons par un premier input pour le prénom, ainsi que le bouton submit.

Snowfall.Web.Mvc/Views/Comptes/New.cshtml
<!-- ... -->

<div class="row">
<div class="col-md-6 offset-md-3">
<h1 class="mb-3">Créer un compte</h1>

<form asp-controller="Comptes" asp-action="Create">
<div class="form-floating mb-3">
<input asp-for="Prenom" class="form-control"/>
<label asp-for="Prenom"></label>
</div>

<div class="form-floating mb-3">
<input asp-for="Nom" class="form-control" />
<label asp-for="Nom"></label>
</div>

<div class="form-floating mb-3">
<input asp-for="Email" class="form-control" />
<label asp-for="Email"></label>
</div>

<div class="form-floating mb-3">
<input asp-for="Password" class="form-control" />
<label asp-for="Password"></label>
</div>
<div class="form-floating mb-3">
<input asp-for="ConfirmPassword" class="form-control" />
<label asp-for="ConfirmPassword"></label>
</div>

<button class="btn btn-primary">S'inscrire</button>
</form>
</div>
</div>

Lier l'action du contrôleur au ViewModel

Snowfall.Web.Mvc/Controllers/ComptesController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(CreerCompteViewModel creerCompteViewModel)
{
return Ok();
}

Test rapide

Testons rapidement que le formulaire est bien lié au contrôleur en affichant simplement les données reçues.

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(CreerCompteViewModel creerCompteViewModel)
{
return Content($@"
Bonjour {creerCompteViewModel.Prenom} {creerCompteViewModel.Nom}
{creerCompteViewModel.Email}
{creerCompteViewModel.Password}
{creerCompteViewModel.ConfirmPassword}
");
}

Testez dans votre navigateur que le tout fonctionne.