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 :

[MVC3] Multiview : Changer de view


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut [MVC3] Multiview : Changer de view
    Bonjour,
    Je n'arrive définitivement pas à trouver une réponse à une question toute bête:
    Comment fait-on en MVC3 pour changer la vue active d''un élement MultiView??? (à l'aide d'un bouton du genre "passer à l'étape suivante")
    J'aimerais faire ça de la façon la plus "propre" possible.
    Je suis sûr que l'un d'entre vous connait la réponse à cette question.....
    Merci d'avance

    PS: c'est un formulaire en plusieurs étapes, dont la seconde page dépend des info de la première (notamment si on est connecté ou non)

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Salut,

    Sauf erreur de ma part, comme multiview utilise le viewstate, il ne fonctionnera pas en MVC

    Si tu veux faire "comme si" tu avais un multiview, tu vas devoir faire pas mal de javascript, et utiliser des vues partielles...

    Une petite recherche sur le web renvoie ce resultat:
    http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx

    Regarde si cela corresponds a ton besoin

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Merci bcp pour la réponse. Ce que j'appréciais justement dans l'asp c'est que ça évitait l'appel au javascript (notamment pour l'étape de login optionnelle...)

    Le control "ne fonctionne pas en MVC", même en MVC avec moteur de vue "classique"?
    Y a-t-il une différence de fonctionnalités entre MVC classique et razor? Ou est-ce juste de la syntaxe?

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Y a-t-il une différence de fonctionnalités entre MVC classique et razor? Ou est-ce juste de la syntaxe?
    C'est juste la syntaxe qui est différente.

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Il n'y a qu'une différence syntaxique entre Razor et le moteur classique par contre il y'a un enorme fossé entre ASP.Net et ASP.Net MVC
    Grosso modo, sur ASP.Net, tout le rendu HTML est un peu abstrait alors qu'avec MVC tu es justement au plus près!
    Cependant, je pense que tu peux faire ca sans Javascript juste avec plusieurs actions dans le controleur: genre GoToBillingStep, GoToShippingStep, etc.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Cependant, je pense que tu peux faire ca sans Javascript juste avec plusieurs actions dans le controleur: genre GoToBillingStep, GoToShippingStep, etc.
    Ya moyen d'avoir un ptit exemple très rapide? Ce serait parfait
    Je maitrise parfaitement le .Net et les technos web (html, css, js), mais l'asp je n'en ai pas trop fait!

    Je démarre le site, et hésite toujours entre classique et razor...

    J'ai vu également que (avec razor) il n'y a pas d'aperçu dans visual studio, du coup on est obligé d'utiliser un navigateur; question: est-ce qu'il y a un moyen de lancer le serveur web sans lancer un debug avant? (il se lance avec le debug et reste après, mais je voudrais savoir si on peut juste le lancer manuellement par visual studio)

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par jo_dalton Voir le message
    Ya moyen d'avoir un ptit exemple très rapide? Ce serait parfait
    Je maitrise parfaitement le .Net et les technos web (html, css, js), mais l'asp je n'en ai pas trop fait!

    Je démarre le site, et hésite toujours entre classique et razor...

    J'ai vu également que (avec razor) il n'y a pas d'aperçu dans visual studio, du coup on est obligé d'utiliser un navigateur; question: est-ce qu'il y a un moyen de lancer le serveur web sans lancer un debug avant? (il se lance avec le debug et reste après, mais je voudrais savoir si on peut juste le lancer manuellement par visual studio)
    Mouarf! Je suis une buse en MVC, j'ai jamais trop fouillé, je connais que dans la théorie
    Par contre, pour ce qui est du debug, tu peux installer/utiliser IIS sur ton PC.

  8. #8
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par jo_dalton Voir le message
    Ya moyen d'avoir un ptit exemple très rapide? Ce serait parfait
    L'idée, c'est que tu aies une seule page avec n divs, et n boutons, et que, quand tu cliques sur un bouton, tu geres, dans ton controlleur, la visibilité des divs en passant à ton formulaire une information sur l'étape en cours...et non, malheureusement, je n'ai pas d'exemples

    Je maitrise parfaitement le .Net et les technos web (html, css, js), mais l'asp je n'en ai pas trop fait!
    Je démarre le site, et hésite toujours entre classique et razor...
    Si tu maitrises html/css, pars sur Razor (avis perso )

    J'ai vu également que (avec razor) il n'y a pas d'aperçu dans visual studio, du coup on est obligé d'utiliser un navigateur; question: est-ce qu'il y a un moyen de lancer le serveur web sans lancer un debug avant? (il se lance avec le debug et reste après, mais je voudrais savoir si on peut juste le lancer manuellement par visual studio)
    Tu peux faire Ctrl+F5 pour lancer sans le debugger, ou effectivement développer depuis IIS (tu dois créer un repertoire virtuel, et l'ouvrir depuis VS)

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    L'idée, c'est que tu aies une seule page avec n divs, et n boutons, et que, quand tu cliques sur un bouton, tu geres, dans ton controlleur, la visibilité des divs en passant à ton formulaire une information sur l'étape en cours...
    Donc si je comprends bien ça charge TOUT le formulaire à chaque boutton? Et on personnalise ensuite avec JS

    Ce qui me dérange avec ça, c'est que j'aimerais avoir un formulaire accessible simplement, puis seulement après un login, si nécessaire. J'ai l'impression que je vais galérer niveau fiabilité/sécurité avec cette solution... Mais je me trompe peut être!

    Citation Envoyé par Philippe Vialatte Voir le message
    Si tu maitrises html/css, pars sur Razor (avis perso )
    Je pense que je vais suivre le conseil...
    Citation Envoyé par Philippe Vialatte Voir le message
    Tu peux faire Ctrl+F5 pour lancer sans le debugger
    Je n'avais pas pensé à ça, c'est effectivement ce que je cherchais, merci

  10. #10
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par jo_dalton Voir le message
    Donc si je comprends bien ça charge TOUT le formulaire à chaque boutton? Et on personnalise ensuite avec JS
    Me suis mal exprimé...je voulais dire, pour une solutions sans JS

    L'idée, ce serait d'avoir, dans ta vue cshtml, un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     @if(Model.Step == 1){
         formulaire n°1
      } 
      else if (Model.Step == 2){
         formulaire n°2
      } // etc...
    Et, a chaque clic sur ton bouton next, aprés les vérifications d'usage, tu incrémentes ou décrémentes step. Il faut aussi, a mon avis, ajouter une sérialisation des données dans la session pour faire "comme si" tu avais un viewstate

    aprés, une fois que tout ca fonctionne, tu dois même pouvoir le convertir en une vue partielle, que tu rends en ajax

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par Philippe Vialatte Voir le message
    un exemple
    Et si il faisait une action par etape? Pour chaque action y'a sa vue associée non?

  12. #12
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Et si il faisait une action par etape? Pour chaque action y'a sa vue associée non?
    Sur, ce serait la façon "MVC" de le faire

    L'idée était plus d'essayer de coller au wizard "façon ASP.NET"

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Points : 56
    Points
    56
    Par défaut
    Merci pour vos réponses

    Citation Envoyé par Nathanael Marchand Voir le message
    Et si il faisait une action par etape? Pour chaque action y'a sa vue associée non?
    Ca n'impliquerait pas de stocker les données avant que tout le formulaire ne soit validé?
    Je ne suis pas encore au niveau coté ASP/MVC, c'est très frustrant


    Exemple d'un service en ligne d'envoi de cartes postales/numériques

    Supposons que j'ai (3 + 1) étapes:
    • Step 1: Saisie d'une date d'anniversaire + Nom du destinataire + Type d'envoi (poste ou email)
    • Step 2: (facultative, si l'internaute est loggué, on saute) Login
    • Step 3: Saisie de l'adresse du destinataire d'une carte postale (postale ou email en fonction de Step 1) + texte accompagnement + Upload d'une image pour envoyer la carte
    • Step 4: Confirmation et validation


    Comment est-ce que je pourrais faire un truc comme ça?
    Il faut 4 actions, puis.....
    En gros, mon principal point d'interrogation est: Comment on passe les informations d'une étape à l'autre

  14. #14
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Tu peux stocker l'état des étapes précédentes en session (ou dans des champs cachés de formulaire, mais ca c'est moche)

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 82
    Points
    82
    Par défaut
    Je trouve perso que le mieu est de sérialisé ton model de l'etape précedent dans l'url de validation de ton formulaire en cours.
    Ca fait très REST !
    Malheureusement sérializé ton model dans une URL n'est pas prévu dans MVC (l'invere si!), donc pour cela il faut que tu utilise la lib :
    http://unbinder.codeplex.com/
    ou sinon tu fait ca la main, comme tu préfere !

    Resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using(@Html.BeginForm("CurrentStep", Model.RouteValuesPrecedentStep))
    {
     
    }

  16. #16
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Euuuh... Doucement la! On est limité en taille d'url! Ca peut vite saturer (en plus d'avoir des urls inbuvables, ce qui etait un des atouts de mvc)

  17. #17
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    +1 pour Nathanael, surtout dans le cas d'un Wizard avec adresse et tout le tralala...

    au dela d'environ 2000 caractères dans l'URL, c'est la fin des haricots

    (et l'upload de l'image, je n'en parles pas )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. Socket, problème pour changer mes view
    Par theandroitor dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 07/05/2014, 22h26
  2. zend + changer de view à la volée
    Par Reckonings dans le forum Zend Framework
    Réponses: 6
    Dernier message: 13/06/2012, 10h10
  3. Changer de view dans une boite de dialogue
    Par karaz_karaz dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 13/06/2010, 11h57
  4. Réponses: 1
    Dernier message: 05/12/2007, 10h10
  5. MultiView & View, question sur leur activation
    Par Danny Blue dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/04/2007, 10h42

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