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 MVC Discussion :

Récupérer une image depuis la vue vers le controlleur.


Sujet :

ASP.NET MVC

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Récupérer une image depuis la vue vers le controlleur.
    Bonjour,

    Je débute avec les application MVC (en fait, je débute avec le WEB tout cours ...)
    J'ai commencer à écrire une application avec login / consultation d'information d'une de mes application WIN.
    Après quelques difficultés, j'ai (je pense) réussi à maitriser la bète et ça fonctionne.
    Ça se corse maintenant, je veux créer une page web (via MVC et razor) permettant de signer un rapport disponible dans mon application lourde.

    J'ai donc créer un controlleur et la vue nécessaire.
    Au niveau du controlleur j'ai un @Modeltype avec deux paramètres un string, et un byte[]
    Le string est correctement renseigner depuis un @html.Textboxfor ...

    Le problème se situ au niveau de la signature que je récupère grace a ces scripts ...

    @Section Scripts
    <style>
    p {
    margin: 0.515em 0 0;
    padding: 0 6px;
    }
    </style>
    <link href="~/signature/assets/jquery.signaturepad.css" rel="stylesheet">
    <!--[if lt IE 9]><script src="../assets/flashcanvas.js"></script><![endif]-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
    <script src="~/signature/jquery.signaturepad.js"></script>
    <script src="~/signature/examples/sample-signature-output.js"></script>
    <script src="~/signature/assets/json2.min.js"></script>
    End Section

    Qui apparraissent sur la page via un iframe ...

    <iframe src="~/signature/examples/full-window.html" class="signature"></iframe>

    Je voudrais récupérer les informations lors de mon submit .....
    Et là, je sèche !

    J'espère avoir été clair.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'étude
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'étude

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Si j'ai bien compris il te manque un champs de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="mesbytes" name="@Html.NameFor(monObject.monChamp)" />
    Lors d'un post tu ne récupère en gros que les "input" inclus dans un form.

    Le post ne récupère pas un iframe, à toi de créér cet input en js.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse

    C'est là que le tag débutant prends tout son son sens!

    Comment je créer cet input pour le récupérer par le post ?




    Citation Envoyé par oasix Voir le message
    Si j'ai bien compris il te manque un champs de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="mesbytes" name="@Html.NameFor(monObject.monChamp)" />
    Lors d'un post tu ne récupère en gros que les "input" inclus dans un form.

    Le post ne récupère pas un iframe, à toi de créér cet input en js.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'étude
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'étude

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Tu crée ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="mesbytes" name="@Html.NameFor(monObject.monChamp)" />
    au moment de l'affichage (GET) de la page.


    Tu met à jour la value avec jquery.

    Tu peux maintenant POST le champs sera retrouvé

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci
    J'avance petit à petit ....
    J'ai ajouté le input hidden et c'est bien la valeur par défaut que j'obtiens au niveau du controlleur.

    Mais maintenant j'ai un autre souci.

    J'essaye de mettre à jour la valeur de cet input avant de soumettre le formulaire,
    j'ai donc ajouter un button, que je gère avec une fonction JS.
    Juque là, j'y suis arrivé,
    j'essayes a ce moment de mettre à jour la valeur.
    Mais cela laisse toujours la valeur par défaut renseigner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value="imgbytes" name="@Html.NameFor(Function(m) m.Signature)" />
    donc ici imgbytes.

    Voici la fonction qui est censé récupéré les informations depuis la iframe et les mettre dans la valeur ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $("#envoi").click(function () {
            $('iframe').contents().find('#envoi').click();
            $('<input>').attr({
                type: 'hidden',
                name: '@Html.NameFor(Function(m) m.Signature)',
                value: ($('iframe').contents().find('#image').val())
            });
            $('form').submit();
        })
    Mais, même si je met explicitement une valeur 'Bonjour' par exemple, j'ai toujours imgbytes

    Merci pour ton aide !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je m'autoréponds ...

    Fallait faire simple ...
    J'ai trouvé le document.getElementById('iframeInfo').value ...

    Me reste plus qu'a récupérer l'information correct depuis le iframe.

    Il y a une sorte d'espion express (Maj+F9) possible avec JS ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'étude
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'étude

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('iframeInfo').value
    s'écrit aussi avec JQuery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#iframeInfo").val("maValeurIci")

    pour l'espion je connais pas bien, utilise des console.log("valeur") et tu vera un retour console...

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je clos le sujet,

    J'ai retourné le truc, et comme bien souvent.
    Le plus simple c'est le mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $("#envoi").click(function () {
            $('iframe').contents().find('#envoi').click();
            document.getElementById('iframeInfo').value = $("#image").val()
            $('form').submit();
        })
    Merci pour les réponses

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Re bonjour,

    Un autre souci est apparu,
    en effet, la solution ci dessous fonctionne nickel ....
    Sauf qu'en testant, avec tout les périphérique c'est OK,
    à l'exception des appareils IOS (que 80% de mes collègues utilisent ....)
    Dans le cas d'IOS, la frame croit en largeur indéfiniment dès le chargement de l'iframe ...
    Même si le retour st correct, la solution est ineviseagble dans l'état.

    J'ai donc remplacer l'Iframe, par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <object id="sigframe" data="~/signature/full-window.html" width="300" height="150" type="text/html"></object>
    La j'ai un rendu correct sur tout ...
    Mais ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $("#envoi").click(function () {
            $('sigframe').contents().find('#envoi').click();
            document.getElementById('iframeInfo').value = $("#image").val()
            $('form').submit();
        })
    ne me renvoi plus les informations ....

Discussions similaires

  1. Récupérer une image depuis le systeme de fichier
    Par momedalhouma dans le forum JSF
    Réponses: 5
    Dernier message: 18/06/2014, 02h31
  2. [Windows Phone 7] Socket, transfert d'une image depuis windows phone vers mon PC et vice-versa
    Par juvenalvangu dans le forum Windows Phone
    Réponses: 1
    Dernier message: 13/10/2013, 14h14
  3. Récupérer une image depuis un IntPtr
    Par Baud10 dans le forum C++/CLI
    Réponses: 4
    Dernier message: 17/01/2010, 17h26
  4. [MySQL] Récupérer une image depuis phpMyAdmin
    Par bonomsoleil dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 17/12/2008, 08h55
  5. Réponses: 3
    Dernier message: 10/11/2008, 11h58

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