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 :

[ASP.NET MVC2] fenetre modal en Jquery bug au post


Sujet :

ASP.NET MVC

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut [ASP.NET MVC2] fenetre modal en Jquery bug au post
    Bonjour à tous.

    J'essaie tant bien que mal d'afficher une fenêtre modal pour m'authentifier.
    De plus une fois authentifié je dois rediriger l'utilisateur vers son dossier

    Voila ce que j'ai codé :

    dans ma master page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <li><%: Html.ActionLink(SiteResources.Connect, MVC.Account.ActionNames.LogOn, MVC.Account.Name, null, new { @class = "logOnModal"}) %></li>
     
    <div id="dialog" class="divHidden">
            <% Html.RenderPartial(MVC.Account.Views.LogOnUserControl); %>
    </div>
    ma fonction javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $().ready(function () {
        $(".logOnModal").click(function () {
                $("#dialog").dialog(
                    {
                        modal: true,
                        close: function (event, ui) { window.location.href = '/Dossier/Detail'; }
                    }
                );
                return false;
            });
    });
    Mon Controlleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    [HttpPost]
            public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        UserConnected userConnected = UserService.Validate(model.UserName, model.Password);
                        if (userConnected != null)
                        {
                            FormsService.SignIn(model.UserName, model.RememberMe);
                            SessionHelper.CurrentUserConnected = userConnected;
                            if (Request != null && Request.IsAjaxRequest())
                            {
                                return PartialView(model);
                            }
                            else
                            {
                                //eturn View();
                                return RedirectToAction("Detail", "Dossier");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", AccountResources.LoginErrorMessage);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex);
                        return View(MVC.Shared.Views.Error);
                    }
                }
                return PartialView(model);
            }
    Alors premier souci, Request.IsAjaxRequest() est égale à false alors que je m'attendais à ce qu'il soit à true.

    Ensuite au niveau du contrôleur si je passe dans
    return PartialView(model);
    dans ce cas je reviens vers la page d'authentification

    si je fais
    return RedirectToAction("Detail", "Dossier");
    , mon site plante, la div dialog me disant qu'elle attend un model de type LogOnModel et non pas de type DossierModel.

    La seule partie qui fonctionne a peu près correctement c'est lorsque l'utilisateur se fait jeter à l'authentification. Dans ce cas je suis redirigé vers la page d'authentification avec un message d'avertissement sauf que je n'ai plus la modal.

    Donc pourriez vous m'aider à créer une fenêtre modal qui me permettrait de :

    1/ authentifier l'utilisateur et le rediriger vers son dossier
    2/ indiquer à l'utilisateur qu'il n' pas réussi à s'authentifier dans la fenêtre modal.

    Merci d'avance de vos réponses

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Excuse moi mais es-tu sur de cette partie de code ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <% Html.RenderPartial(MVC.Account.Views.LogOnUserControl); %>
    Parce que là, pour moi, tu lui passes une variable en voulant appeler un "RenderPartial" qui va appeler une vue existante, mais laquelle de vue ?? tu ne lui indiques pas le nom de la vue.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Merci de ta réponse.

    Alors en fait
    MVC.Account.Views.LogOnUserControl
    correspond au nom de la vue.

    Problème résolu en grande partie, en fait mon application planté car je planquais ma div dans site.master et le model fourni était modifié selon le controlleur (je ne sais pas si c'est clair).

    Maintenant mon souci est d'un autre ordre.

    Lors de l'authentification deux cas se présentent :

    1/ je suis authentifié, la redirection sur le close est OK
    2/ je ne suis pas authentifié, le redirection sur le close fonctionne, hors le contrôlleur imposant d'être authentifié je suis redirigé vers la page d'authentification.

    Ma question est, puis je récupérer à un moment dans ma fonction javascript le résultat de l'action (peu importe le moyen) afin de savoir si je dois rediriger vers /Dossier/Detail ou si je dois rafraichir ma vue afin d'afficher un message d'erreur.

    J'utilisais avant la bibliothèque Omu.Awesome, le souci de cette solution c'est que le code généré met du javascript dans la page hors je n'ai pas le droit de faire ça (je dois systématiquement passé par des fichiers javascript et modifier le comportement de mes objets en javascript afin d'être fonctionnelle sans javascript)

    En revanche cette solution fournissait un paramêtre pratique SuccessFunction qui appelait une fonction en cas de succès sinon on restait sur la popup.

    Voila c'est encore un peu brouillon dans mon esprit, je découvre un peu jquery.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Alors je n'ai pas tout compris dans ta question mais je vais t'exposer un problème que j'ai eu à traiter dans le cadre professionnelle :

    Nous avons fait un site ne MVC avec beaucoup de mise à jour (comme un peu gmail) en ajax, mais avec l'authentification et la redirection automatique, à certain moment on avait des problèmes car nos requêtes ajax retournaient un code erreur la première fois et la page de login dans un second temps.
    En gros on s'attendait à avoir une structure JSON et on avait du code HTML

    On a donc capté les codes erreurs de requêtes ajax (coté javascript), pour rafraichir la page ("Windows.reload()") quand notre requête ajax ne s'était pas bien passé. Certain frameworks très bien fait comme Telerik permettent de le faire sans avoir besoin de faire ses propres méthodes, mais si vous utilisez JQuery pour faire les requêtes suffit de gérer les statuts de la requête

Discussions similaires

  1. Asp.net MVC2, bug créé à partir de L’URL
    Par maparè dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 09/03/2011, 20h11
  2. [Débutant] ASP.NET MVC2 - Erreur 404
    Par csharpeur dans le forum ASP.NET MVC
    Réponses: 6
    Dernier message: 20/01/2011, 14h44
  3. Réponses: 0
    Dernier message: 16/11/2009, 11h05

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