Voici le scénario: lorsqu'un nouvel utilisateur s'enregistre sur notre site Web, nous voulons envoyer un e-mail pour vérifier que l'utilisateur possède l'adresse e-mail. Dans le courriel il y a un lien vers une page qui fera la vérification, quelque chose comme ceci:ASP.NET MVC: Utiliser GET et POST dans la même méthode
http://www.mysite.com/account/verify/token
La méthode verify ressemble à ceci:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Verify(Nullable<Guid> id)
{
// tries to get the user based on the verification code
if (ValidId(id))
{
// if the id is correct, update user data in the model and redirect
return RedirectToAction("Index", "Dashboard");
}
else
{
// redirects the user to the verify view
return View("Verify");
}
}
La vue « Vérifier » est tout simplement un zone de texte avec un bouton, de sorte que l'utilisateur peut entrer le code de vérification manuellement (l'utilisateur peut accéder à cette page à partir du site, et pourrait préférer simplement copier-coller le code). Lorsque l'utilisateur clique sur le bouton, je veux faire la même chose que ma méthode GET; donc j'ai fini avec quelque chose comme ceci:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Verify(Nullable<Guid> id) { ... }
J'ai quelques problèmes avec ce code (qui fonctionne, mais ...):
- Est-il acceptable d'avoir un GET et POST méthode? Ou y a-t-il une meilleure façon de gérer ce scénario?
- Je modifie les données dans une méthode GET (si l'id est correct, je mets à jour les données de l'utilisateur pour refléter que c'est vérifié) et c'est un gros NON NON ... encore, je veux que l'utilisateur puisse juste cliquez sur le lien et vérifiez le jeton. Y a-t-il un meilleur moyen d'y parvenir?
Merci
La vue __Verrify__ peut recevoir une requête du formulaire en utilisant JS, vous n'aurez donc pas d'action séparée. Non? – Amirshk