Comment afficher le message d'erreur uniquement dans OnFailure de l'Ajax.BeginForm dans MVC3?
J'ai cette simple ajax formulaire dans mon MVC3 app, qui envoie des messages électroniques:
@using (Ajax.BeginForm("SendMessage", new AjaxOptions {
LoadingElementId = "wait",
OnSuccess = "loadMessages",
OnFailure = "showError" }))
{
<input type="text" name="message" placeholder="Message" />
<input type="submit" name="submit" value="Send" />
}
Si l'action ne parvient pas à envoyer un message, il lève l'exception. L'exception est traitée et affichée dans le showError(erreur){} fonction javascript:
function showError(error) {
$("#error").text(error.responseText);
};
Le problème est: erreur.responseText est le html de vidage de la totalité de la page d'erreur.
J'ai besoin d'afficher uniquement le message d'erreur exception (tout ce qui est dans ex.Message dans MVC3).
La mise en œuvre de "public ActionResult SendMessage(string message) { }" n'est pas pertinent.
J'ai besoin de savoir comment faire pour afficher le message de l'exception que dans showError(erreur) javascript gestionnaire.
Merci beaucoup.
[HttpPost]
public ActionResult SendMessage(string message)
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("[email protected]");
mail.Subject = "Some Message";
mail.Body = message;
mail.To.Add("[email protected]");
SmtpServer.Send(mail);
return null;
}
Pas sûr de ce qu'il a à voir avec la question... 8|
b/c vous ne pouvez pas utiliser onFailure, sauf si vous voulez capturer une erreur http. Voulez comprendre comment vous renvoyer l'erreur
OriginalL'auteur monstro | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas gérer chaque exception dans OnFailure méthode. Parce que OnFailure est appelée que si le statut de la réponse n'est pas dans les 200. Si vous pouvez gérer votre scénario à quelque chose comme ceci:
Ici, dans ce code, si le courrier envoyé avec succès puis j'ai retourné la réponse de la "Réussite" d'autre j'ai retourné l'erreur réelle et en javascript, j'ai géré cette réponse comme ceci:
Espère que cela va vous aider.
OriginalL'auteur Jitender Kumar
Pour résoudre cela dans ma propre solution, j'ai utilisé le HttpStatusCodeResult classe. Voici le code que j'ai pour référence:
Ce qui devrait encore déclencher tous les normales erreur de comportement sur le client, y compris en mettant une erreur 500 dans le navigateur de la console, et devrait fonctionner parfaitement avec le script que vous utilisez déjà pour montrer votre erreur.
OriginalL'auteur mikeschuld
Vous pourriez attraper vos exception dans le contrôleur et envoyer un message d'erreur exact de retour. Quelque chose comme:
Vous devrez peut-être examiner la réponse dans ce cas et mettre à jour votre javascript
showError
en conséquence.OriginalL'auteur Floremin