Dans mon application ASP.NET MVC 2, j'utilise HandleErrorAttribute pour afficher une page d'erreur personnalisée en cas d'exceptions non gérées, et cela fonctionne parfaitement, sauf si l'exception se produit dans une action appelée par Ajax.ActionLink. Dans ce cas, rien ne se passe. Est-il possible d'utiliser HandleErrorAttribute pour mettre à jour l'élément cible avec le contenu d'une vue partielle "Error.ascx"?Comment faire pour que HandleErrorAttribute fonctionne avec Ajax?
5
A
Répondre
11
Pour ce faire, vous pouvez écrire un filtre d'action personnalisé:
public class AjaxAwareHandleErrorAttribute : HandleErrorAttribute
{
public string PartialViewName { get; set; }
public override void OnException(ExceptionContext filterContext)
{
// Execute the normal exception handling routine
base.OnException(filterContext);
// Verify if AJAX request
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
// Use partial view in case of AJAX request
var result = new PartialViewResult();
result.ViewName = PartialViewName;
filterContext.Result = result;
}
}
}
Et puis spécifiez la vue partielle à utiliser:
[AjaxAwareHandleError(PartialViewName = "~/views/shared/error.ascx")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult SomeAction()
{
throw new Exception("shouldn't have called me");
}
}
Enfin, selon vous, en supposant que vous avez le lien suivant :
<%= Ajax.ActionLink("some text", "someAction", new AjaxOptions {
UpdateTargetId = "result", OnFailure = "handleFailure" }) %>
Vous pouvez faire la fonction handleFailure
mettre à jour le bon div:
<script type="text/javascript">
function handleFailure(xhr) {
// get the error text returned by the partial
var error = xhr.get_response().get_responseData();
// place the error text somewhere in the DOM
document.getElementById('error').innerHTML = error;
}
</script>
Questions connexes
- 1. Comment faire pour que Ajax fonctionne avec Jquery?
- 2. Comment faire pour que link_to_remote fonctionne avec jQuery? Ajax n'est pas erreur définie
- 3. Comment faire pour que dotnetopenid fonctionne avec AOL
- 4. Comment faire pour que --detect-branches fonctionne avec git-p4?
- 5. Comment faire pour que mon UserControl WPF fonctionne avec CompositeCollection
- 6. Comment faire pour que TTTableViewDataSource fonctionne avec AddressBook
- 7. Comment faire pour que attr_accessor_with_default fonctionne avec une collection?
- 8. Comment faire pour que tinymce fonctionne avec iframe?
- 9. Problèmes pour que l'effet AJAX fonctionne avec RubyOnRails
- 10. Comment faire pour que RubyGems fonctionne avec Jruby et JBOSS; fonctionne avec Tomcat mais pas JBoss
- 11. Comment faire pour que ce sélecteur de liste déroulante ajax fonctionne dans tous les navigateurs?
- 12. Comment fonctionne Facebook avec AJAX?
- 13. Comment faire pour que UIMenuController fonctionne pour une vue personnalisée?
- 14. Comment ignorer une exception avec l'événement HandleErrorAttribute OnException
- 15. Faire ajax avec Jquery
- 16. Comment faire pour que move_uploaded_files fonctionne en PHP?
- 17. Comment faire en sorte que Worker() fonctionne avec plusieurs domaines?
- 18. Comment faire pour que SQL Server fonctionne automatiquement dans NetBeans?
- 19. Comment faire pour que slideDown fonctionne sur une table?
- 20. Comment faire pour que TiddlySnip fonctionne dans Firefox?
- 21. Comment faire pour valider l'installation ASPNET AJAX
- 22. Comment faire pour que jQuery post fonctionne avec une WebToLead Salesforce
- 23. Impossible de faire en sorte que la validation du formulaire Prototype AJAX fonctionne conjointement avec Codeigniter
- 24. Comment faire pour que cet extrait PHP fonctionne sans avertissement?
- 25. Comment faire pour que mon journal Log :: Log4perl fonctionne?
- 26. Comment faire pour que Vim Omni Completion fonctionne dans Makefiles?
- 27. Comment faire pour que ce composant personnalisé linkButton fonctionne?
- 28. Comment faire pour que WPF DataBinding-to-a-object fonctionne
- 29. Comment faire pour que Delphi 2009s (Refactor) Extract Interface fonctionne?
- 30. Comment faire pour que AccessKey ou AcceleratorKey fonctionne dans Silverlight?
Cette page est aussi mérite d'être lu car il ajoute plus d'information à ce sujet: http://jimmylarkin.net/post/2011/09/30/MVC-3-HandleError-Attribute-and- AJAX-Forms.aspx –