IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Déclencher, depuis serveur, popup de confirmation coté client, puis poursuivre l'éxecution du code serveur


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Déclencher, depuis serveur, popup de confirmation coté client, puis poursuivre l'éxecution du code serveur
    Bonjour,

    En ASP.Net, et en langage VB, est-il possible, depuis le code serveur, de déclencher, sur le navigateur du client, une popup de confirmation type oui/non, de récupérer la réponse du client, et de poursuivre l'exécution du code serveur en fonction de cette réponse. Quelque chose du style :

    Sub toto()

    Traitement serveur
    ...

    Question au client et récupération de la réponse

    Poursuite du traitement serveur

    If reponse = "oui" Then
    ...
    Else
    ...
    End If

    End Sub

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    le server ne peut envoyer d'information qui n'a pas été demandée par le client (grosso modo).
    Sans avoir lu précisément ta demande je peux donc te dire, dans l'absolu (hors redéfinition du besoin), tu as deux possibilités :
    - un timer JS côté client qui check le server tous les x secondes pour voir s'il un "flag" aurait changer,
    - implémenter des websockets pour "simuler" un client riche.

    Je pense qu'il serait plus simple de revoir l'enchaînement de tes étapes.
    La première question à se poser est : quel événement est censé engendrer le confirm ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Ne pas oublier de mettre ton code dans un thread afin de retourner une réponse au client...
    J'ai du mal à comprendre la raison de faire ca. Il faudrait plutot re-penser ta page autrement...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Eclaircissements
    Bonjour et merci pour vos premières suggestions,

    Vous m'avez demandé dans quel but faire cela, je vais donc préciser.

    Il s'agit d'une mini gestion documentaire. Le client peut déposer des documents (doc, xls, txt, pdf, etc...) sur un serveur. Chaque document déposé fait l'objet d'une nouvelle entrée dans une base de données SQL Server. La base contient entre autres, deux champs essentiels. L'un avec tout le contenu du document qui fait l'objet d'une indexation full-text et l'autre qui contient 5 mots clés. Tout çà pour que l'utilisateur puissent ensuite aisément retrouver le document qui contient l'information qui l’intéresse.

    Donc, j'ai une page d'upload et je veux que tout ce qui suit se passe sur cette unique page.
    Le client choisi un document, et valide. Le serveur n'upload pas le document dans un premier temps, il récupère simplement le nom du document et effectue un premier traitement qui est de savoir si ce document existe déjà sur le serveur.

    Si non, retour sur le client pour lui laisser la possibilité de saisir les 5 mots clés. Il revalide et le serveur effectue la suite du traitement (upload du document sur le serveur, création d'une entrée base de données avec indexation du texte complet et enregistrement des 5 mots clés)

    Si oui, alors je récupère les 5 mots clés correspondant dans la base de données, et je veux retourner sur le client et lui afficher ces 5 mots clés + un message modal du type : "Le document existe déjà, voulez-vous le remplacer?" (à priori un Confirm() en javascript?)

    Si le client réponds "Non", fin de l'opération, mais on reste sur la page pour que le client puisse choisir éventuellement un autre document à uploader.

    Si le client réponds "Oui", on reste sur la page pour que cette fois le client puisse modifier éventuellement les 5 mots clés rapatriés, car si le document porte le même nom, son contenu a probablement changé (sinon aucun intérêt d'écraser le précédent document!).
    Lorsque le client est satisfait de ces mots clés, il revalide.

    Retour sur le serveur, upload du document et mise à jour de l'enregistrement correspondant dans la base de données avec le nouveau contenu et les nouveaux mots-clés

    Voilà l'idée, facile à faire avec une application VB.Net classique. Mais voilà, je ne maîtrise pas bien le Web, et notamment tous ces allers-retours client/serveur. (comment appeler une procédure serveur depuis un javascript, comment appeler un javascript depuis une procédure serveur, etc...)

    Bref, si vous avez une idée, merci

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    le server ne peut envoyer d'information qui n'a pas été demandée par le client (grosso modo).
    Sans avoir lu précisément ta demande je peux donc te dire, dans l'absolu (hors redéfinition du besoin), tu as deux possibilités :
    - un timer JS côté client qui check le server tous les x secondes pour voir s'il un "flag" aurait changer,
    - implémenter des websockets pour "simuler" un client riche.
    C'était encore vrai il y a quelques années, mais je dois dire qu'aujourd'hui c'est faux Avec SignalR on peut faire énormément de choses, comme par exemple abonner un client et le notifier depuis le serveur. On peut même faire du temps réel. Plus d'info ici : http://www.asp.net/signalr
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    pour répondre à ta dernière question (discussion client/server) c'est les solutions habituelles : les POST, GET et requêtes AJAX.

    Dans ton cas il ne semble pas y avoir besoin d'un système d'event server>client.
    Un simple callback rattaché à tes requêtes AJAX devrait permettre d'afficher à l'utilisateur qu'une tache est finalisée côté server, et selon la réponse d'appeler un confirm() ou autre.

    Pour la mise en oeuvre de tout ça tu as le choix entre le pur JS (avec JQuery ou ... vanilla.js ), ou utiliser les ScriptManager proposés par le framework .NET. Dans un cas comme l'autre il faudra prendre une ou deux heures pour se former.

    @DotNetMatt : ça fait un moment que j'ai pas taté de l'ASP.NET, bien content que Crosoft ait fait une bibli pour faciliter le code.
    Par contre techniquement je suppose que ça se base, entre autres, sur les WebSocket, nop ?
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Par contre techniquement je suppose que ça se base, entre autres, sur les WebSocket, nop ?
    Oui tout à fait, ca se base sur les WebSocket. SignalR permet d'abstraire toute cette logique sous-jacente. Donc c'est très facile à utiliser et ca évite de perdre du temps à développer ce genre de mécanique. Ca permet aussi faire du RPC, et pas mal d'autres choses...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Il serait plus simple de faire 2 callback (mais surement moins performant que les websocket).
    Le premier pour la confirmation (si besoins) et le second pour poursuive le traitement...(ou pas)

  9. #9
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    599
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 599
    Points : 2 024
    Points
    2 024
    Par défaut
    Personnellement, je rejoins, jopomk et utiliserais une WebMethod appelée par javascript.

    J'en décris rapidement le mode d'appel sur cette page (chercher mon post) avec jQuery.
    http://www.developpez.net/forums/d13...ette-libraire/

    Après spécification du nom du document, javascript appelle la methode C# qui va vérifier l’existence ou non du doc.
    (le code de la WebMethod peux être sur la même page aspx ; cela ne provoque pas de rechargement de la page).


    Dans la partie success: du retour, tu peux analyser la réponse de la WebMethod et si nécessaire demander confirmation d'écrasement via javascript.

    Le couple WebMethod/jQuery sont une façon très simple de faire de l'ajax et donc permettre à du code javascript d'appeler une fonction C# static et qui peut renvoyer un type complexe qui sera reproduit en javascript - json devient transparent.

    Seul défaut de cette méthode, est que quand il y a un problème, on a juste une erreur http 500 et il est difficile de comprendre ce qui se passe.
    C'est parfois très sensible (à la casse par exemple)
    Je pars donc toujours d'un appel ultra simple (sans paramètre), puis j'en ajoute 1, puis 2 et teste à chaque fois.
    --
    vanquish

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Citation Envoyé par vanquish Voir le message
    Personnellement, je rejoins, jopomk et utiliserais une WebMethod appelée par javascript.

    J'en décris rapidement le mode d'appel sur cette page (chercher mon post) avec jQuery.
    http://www.developpez.net/forums/d13...ette-libraire/

    Après spécification du nom du document, javascript appelle la methode C# qui va vérifier l’existence ou non du doc.
    (le code de la WebMethod peux être sur la même page aspx ; cela ne provoque pas de rechargement de la page).


    Dans la partie success: du retour, tu peux analyser la réponse de la WebMethod et si nécessaire demander confirmation d'écrasement via javascript.

    Le couple WebMethod/jQuery sont une façon très simple de faire de l'ajax et donc permettre à du code javascript d'appeler une fonction C# static et qui peut renvoyer un type complexe qui sera reproduit en javascript - json devient transparent.

    Seul défaut de cette méthode, est que quand il y a un problème, on a juste une erreur http 500 et il est difficile de comprendre ce qui se passe.
    C'est parfois très sensible (à la casse par exemple)
    Je pars donc toujours d'un appel ultra simple (sans paramètre), puis j'en ajoute 1, puis 2 et teste à chaque fois.
    Lol, Tu viens d’expliquer en plus long mon post précédent ^^.

Discussions similaires

  1. Coté client / Coté serveur
    Par corbel88 dans le forum GWT et Vaadin
    Réponses: 12
    Dernier message: 24/04/2008, 16h33
  2. [AJAX] Coté serveur ou coté client ?
    Par Alain Defrance dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/01/2008, 13h48
  3. [EJB3] Mise à jour des Entity coté serveur si modif coté client
    Par SeeNapse dans le forum Java EE
    Réponses: 8
    Dernier message: 23/01/2007, 07h46
  4. Validation d'un formulaire coté client et/ou coté serveur
    Par antrax2013 dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 12/07/2006, 16h03
  5. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo