2010-06-16 3 views
0

Je dispose d'un formulaire dans MS AJAX ModalPopup Extender, qui se trouve dans un UpdatePanel (pour le chargement asynchrone). Tout fonctionne comme prévu. Il y a une chose que j'essaie de faire mais je ne sais pas comment le faire.Message de mise à jour sur ASP.NET ModalPopupExtender

Lors de la soumission d'un formulaire, une validation côté serveur est effectuée en plus de la validation côté client. Ma question est: quelle est la meilleure façon d'afficher les messages d'erreur de validation, le cas échéant? Ce serait idéal si les messages pouvaient être écrits de manière asynchrone dans le popup de sorte que le popup soit toujours là.

Si ce n'est pas possible, je pense à afficher les messages en utilisant la boîte d'alerte JavaScript.

Toute idée et suggestion sont grandement appréciées.

John

+0

désolé je n'ai jamais compris comment marquer une réponse comme réponse acceptée. Finalement, j'ai compris. Je suis retourné et marqué ceux qui ont répondu à ma question comme étant répondu. Merci! – John

+0

Pas de problème. Désolé, je ne connais pas la réponse à votre question. –

+0

jacerhea, c'est OK. Des crédits devraient être accordés à ceux qui ont pris le temps et les efforts pour répondre à la question de quelqu'un. – John

Répondre

2

Il a été longtemps que je l'ai utilisé le ModalExtender et UpdatePanels mais cela est possible. Essentiellement (rouille tombant de la tête), j'avais une étiquette à l'intérieur de l'ensemble modal à visible = false. Puis, en cliquant sur le bouton Ok, j'ai appelé une fonction dans le code derrière qui a traité la logique. Si la logique a échoué, j'ai mis à jour le texte de l'étiquette et défini visible = true. Si la logique est passée, j'ai appelé la propriété close() du modal. Avec les deux, vous devez appeler updatePanel.update() pour que le contenu soit actualisé. Permettez-moi de voir si je peux trouver un exemple ...

pas exactement ce que je cherchais, mais il peut vous aider à obtenir sur la bonne voie:

If (logInstance.isNew) Then 
    result = logInstance.createNewLogEntry() 
    If (result.ToLower = "success") Then 
     Response.Redirect("default.aspx?status=1") 
    Else 
     saveErrorType.InnerHtml = result 
     ModalSaveError.Show() 
    End If 
Else 
    result = logInstance.updatePreviousLogEntry(textReasons.Value) 
    If (result.ToLower = "success") Then 
     Response.Redirect("default.aspx?status=2") 
    Else 
     saveErrorType.InnerHtml = result 
     ModalSaveError.Show() 
    End If 
End If 
1

Tommy, merci pour la réponse. Au lieu de vous répondre en guise de commentaire, je le fais en guise de réponse, en espérant que quelqu'un puisse me dire si c'est ce que nous pouvons faire de mieux. Aussi, il peut être d'une aide à ceux qui font face à la même situation.

Après avoir posté hier j'ai passé quelques heures dessus et trouvé une solution, qui est fondamentalement la même idée que vous avez décrite dans votre réponse.

Le problème principal était que je n'utilise pas le bouton OK de l'extension. Au lieu de cela, j'ai utilisé un bouton de lien régulier qui déclenche un événement de clic côté serveur quand on clique dessus. Cet événement ferme la fenêtre contextuelle quel que soit le résultat de la validation. Donc, mes objectifs étaient de garder la fenêtre ouverte ou au moins la faire paraître ouverte, puis ajouter tout message d'erreur de validation. Après avoir éclairci ma pensée sur le problème, j'ai pensé que je devrais être en mesure de rouvrir la fenêtre contextuelle et de remplir le formulaire avec les données sur lesquelles l'utilisateur travaille, et en y ajoutant mes messages d'erreur de validation.

C'est fait!

Merci encore.

+0

À tout moment! J'ai regardé mon code de page .aspx et avait fait la même chose - Aucun paramètre OKBtnID sur ces modaux. – Tommy

Questions connexes