2010-05-13 5 views
0

Nous utilisons un asp: TreeView configuré avec un chargement paresseux. La méthode de rappel affectée à OnTreeNodePopulate lève une exception si l'utilisateur a été déconnecté depuis le chargement de la page. Ce que nous voulons faire est de diriger l'utilisateur vers la page de connexion.Gestion des exceptions/erreurs de rappel pour ASP TreeView OnTreeNodePopulate?

Première tentative était d'attraper l'exception sur le serveur et essayer Response.Redirect (...), mais cela ne fonctionne pas parce que vous ne pouvez pas rediriger dans un rappel.

J'ai essayé d'autres approches, y compris l'utilisation ClientScript.RegisterStartupScript (...) mais cela ne semble pas fonctionner pour OnTreeNodePopulate.

S'il y avait une certaine façon nous pourrions accrocher dans la gestion des événements de rappel sur le côté client, alors il serait facile, mais le TreeView ne semble pas offrir quoi que ce soit ici.

Suggestions?

Répondre

0

OK, j'ai une solution, bien que je suis toujours impatient d'entendre d'autres suggestions que cela est la saleté totale:

Dans mon rappel, je prends l'exception avec le bloc suivant:

catch (Exception ex) 
{ 
    if (IsAuthException(ex)) 
    { 
     e.Node.ChildNodes.Add(new TreeNode(@"<script type=""text/javascript"">window.location.href = 'Default.aspx';</script>")); 
    } 
    else 
    { 
     throw; 
    } 
} 

Heureusement, TreeView n'échappe à rien et le JS est exécuté par le navigateur et dirige l'utilisateur vers la page de connexion.

+0

En fait, cela ne fonctionne pas dans IE - il ne suffit pas d'exécuter la JS. Je l'ai trouvé quelque chose encore plus sale qui fonctionne dans les deux IE et FF si: e.Node.ChildNodes.Add (nouveau TreeNode (@ « »)); L'image a une URL non valide si l'événement onerror est invoquée. Agréable. –

Questions connexes