Mon application nécessite la possibilité d'envoyer des e-mails sur plusieurs vues. J'essaie d'utiliser un composant View pour pouvoir réutiliser ma logique à plusieurs endroits. Lorsque l'utilisateur clique sur le bouton Envoyer, je ne souhaite pas actualiser la vue entière ... Je souhaite valider le formulaire et afficher les erreurs de modèle, sinon envoyer l'e-mail.Afficher les composants et les validations côté serveur Ajax
La configuration ci-dessous fonctionne très bien pour la validation côté client, mais je ne suis pas sûr de savoir comment restaurer le côté serveur des erreurs de modèle et les afficher dans la vue. Toute aide est appréciée.
Default.cshtml (vue des composants - en utilisant jquery-ajax-discret)
@model EmailViewModel
<div id="Email">
<div class="row section-buffer">
<div class="col-sm-12">
<span class="section-header">Email</span>
</div>
</div>
<hr />
<form id="EmailForm"
method="post"
class="form-horizontal"
asp-controller="Email"
asp-action="Send"
data-ajax="true"
data-ajax-method="POST"
data-ajax-success="sendEmailSuccess"
data-ajax-failure="sendEmailFailure(xhr, status, error)"
data-ajax-update="Email">
<div class="form-group form-group-sm">
<label class="description-label col-sm-3" asp-for="From"></label>
<div class="col-sm-9">
<input class="form-control" asp-for="From" />
<span asp-validation-for="From" class="text-danger"></span>
</div>
</div>
<!-- remaining fields omitted -->
<div class="form-group form-group-sm">
<div class="col-sm-9 col-sm-offset-3">
<button type="submit" class="btn btn-primary">Send</button>
</div>
</div>
</form>
</div>
EmailViewModel
public class EmailViewModel
{
[Required]
public string From{ get; set; }
//remaining properties omitted
}
EmailController
[HttpPost]
[Route("/email/send")]
public ActionResult Send(EmailViewModel viewModel)
{
if (!ModelState.IsValid)
{
//how do return my model errors back to my View Component?
}
else
{
//do send logic here
return Content("Success");
}
}
Je ne veux pas retourner un message que je produis. Je veux retourner les validations du modèle. Merci pour la réponse si. –
Je viens de garder un exemple de message, vous pouvez retourner tout ce dont vous avez besoin – Krishna
'return View()' ne fonctionne pas car Send.cshtml n'existe pas. Ma vue Component View est nommée Default.cshtml (convention) et existe dans Shared/Components/Email. –