Affichage du message d'erreur sur l'affichage de contrôleur de asp.net mvc 5
Je suis nouvelle dans le développement web et d'essayer d'apprendre ASP.Net MVC 5. Je suis à la recherche d'un enregistrement dans la base de données si l'enregistrement n'est pas trouvé, alors je veux afficher un message d'erreur à l'utilisateur. Ci-dessous est ma tentative:
Contrôleur
[HttpGet]
public ActionResult Search()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(ForgotPasswordMV viewModel)
{
if (Temp.Check(viewModel.Email))
return RedirectToAction("VerifyToken", new { query = viewModel.Email });
else
{
ViewBag.ErrorMessage = "Email not found or matched";
return View();
}
}
Vue:
<p>@ViewBag.ErrorMessage</p>
ViewModel
public class ForgotPasswordMV
{
[Display(Name = "Enter your email"), Required]
public string Email { get; set; }
}
Mais j'ai lu quelque part que je devrais mettre une propriété de mon point de vue modèle et définir le message d'erreur sur la propriété. Je suis confus pour l'instant, la manière d'y parvenir et comment afficher le message d'erreur en Vue alors? Et celui qui est recommandé sur les pratiques exemplaires?
OriginalL'auteur Unbreakable | 2017-04-22
Vous devez vous connecter pour publier un commentaire.
La meilleure pratique consiste à modifier la
ModelState
dictionnaire de la propriété de votre contrôleur comme ceci:Alors, à votre avis, ajoutez la ligne ci-dessous à côté de votre champ email;
[Required]
et puis nous vérifions lesmodelstate.isvalid
alors nous pouvons intercepter l'erreur. Est-ceAddError
faire la même chose sous le capot mais son plus personnalisé?Oui, c'est exact. C'est la meilleure pratique parce que, imaginez que vous avez beaucoup de propriétés sur votre modèle, vous finirez par la création de nombreux propriété de message d'erreur pour chacun de vos propriétés du modèle qui sera à la fin des ballonnements votre modèle. À l'aide de
ModelState.AddModelError
aider à éviter ce genre de choses.Une chose que j'ai remarqué que KeyName doit être le même que le nom de la propriété de sorte qu'il peut attachés à cette propriété particulière.Donc, fondamentalement, premier paramètre dans
AddModelError
est une sorte de raconte que de la propriété qui, dans notre modèle, nous avons besoin de lier ce message d'erreur. Veuillez rectifier moi si je me trompe. Mais de toute façon je vous remercie pour la réponse. 🙂Oui. Aussi, vous pouvez mettre une chaîne vide comme une clé, de sorte que le message d'erreur avec être lié à l'ensemble du modèle. Si vous utilisez thiat solution vous devez utiliser cette ligne
@Html.ValidationSummary(true, "The following error has occured:")
j'ai eu une situation similaire, et ta solution a fonctionné comme un charme pour moi. Beaucoup apprécié !!
OriginalL'auteur CodeNotFound
C'est correct. Vous pouvez ajouter le message d'erreur à votre modèle de vue:
et puis définissez cette propriété sur votre modèle de vue et de passer le modèle de vue à la vue:
et enfin dans votre fortement tapé dans le mode de propriété sur votre modèle:
Donc, fondamentalement, nous sommes ici en remplacement de l'utilisation de
ViewBag
avec une vue fortement typée modèle.Pouvez-vous veuillez voir la réponse ci-dessous, et laissez-moi savoir si c'est la meilleure pratique car il est à l'aide de méthodes d'assistance
OriginalL'auteur Darin Dimitrov
Que pour moi acceptée réponse n'est pas la meilleure pratique. Nous pouvons gérer toutes les erreurs dans les annotations.
Dans notre ViewModel nous préciser
ErrorMessage
s pour notre properites.Dans notre contrôleur
Et notre point de vue
Aww, à droite. Donc peut-être de Validation à Distance sera utile pour quelqu'un. Vous pouvez également utiliser de RV à vérifier le courrier de match/trouver.
OriginalL'auteur Marek