2011-05-21 3 views
2

J'utilise jquerymobile et asp.net MVC3 rasoir. Je suis un peu nouveau pour cela, mais à comprendre les choses, j'ai une table de routage très basique, avec juste l'ignorer la route pour .axd ressources et une route par défaut:asp.net mvc3 RouteToAction() ne m'emmène nulle part

routes.MapRoute(
"Default", 
"{controller}/{action}/{id}", 
new { controller = "Home", action = "Index", id = "", UrlParameter.Optional } 
); 

J'ai un lien d'action qui fonctionne dans un Page .ascx:

@Html.ActionLink("Log On", "LogOn", "Account", null, new { @class = "ui-btn-right" }) 

maintenant, quand je rentre à la page d'accueil, et je complète la vérification des comptes, je dois les envoyer à la page d'accueil, /Home/Home qui fonctionne si je tape dans la barre d'adresse, mais je n'arrive pas à obtenir ma redirection dans le contrôleur de compte: return RedirectToAction("Home", "Home");

Merci pour toute aide!

+1

Je suis aux prises avec le problème exact, avez-vous trouvé la solution, pls répondre à votre question. J'utilise les mêmes technologies que celles que j'utilise. –

+0

@Sutikshan Dubey - Non, je ne l'ai pas, je vais jeter une prime là-dessus et voir si quelqu'un peut aider :) – Brett

+1

D'abord, je ne sais pas si cela aidera votre problème, alors je vais poser c'est comme un commentaire au lieu d'une réponse, mais votre route par défaut est configurée un peu bizarre. id = "", UrlParameter.Optional devrait être: id = UrlParameter.Optional –

Répondre

3

Il semblerait que vous postiez votre formulaire de/Account/LogOn via ajax. Cela signifie que lorsque vous return RedirectToAction("Home", "Home");, la page ne changera pas. Donc, vous avez juste besoin de ne pas utiliser ajax sur le formulaire de soumission. Si ma supposition est fausse, s'il vous plaît poster plus de code afin que nous puissions avoir une idée de ce que le problème est.

Il apparaît dans la documentation que jQuery mobile gère automatiquement les publications via ajax. Pour éviter cela, ajoutez l'attribut data-ajax="false" à l'élément de formulaire. Documentation ici: http://jquerymobile.com/test/docs/forms/forms-sample.html

+0

J'utilise JqueryMobile, donc oui, je suis assez certain qu'il fait un post ajax. Y at-il un bon moyen de résoudre ce problème, en utilisant JqueryMobile? – Brett

+0

Bon point, édité la réponse pour montrer la solution. – Milimetric

+0

En guise de remarque, je ne connais pas jQuery mobile, il se peut donc que vous souhaitiez publier via ajax, puis remplacer votre page par ce qui est passé à votre fonction de réussite. – Milimetric

1

Compte tenu de ce qui est écrit dans documentation, pourriez-vous mettre votre code dans un élément de formulaire et de définir sa propriété d'action à/Account/LogOn? Pour ce faire, vous devrez peut-être convertir votre ActionLink en un bouton.

1

Vous pouvez vérifier la demande de paiement ajax dans le contrôleur:

if(Request.IsAjaxRequest()) 
{ 
    //send json object and do navigate in client 
    return Json(new {IsLogged = true}); 
} 
else 
{ 
    //send redirect html code to browser 
    return RedirectToAction("Home", "Home"); 
} 

et côté client, vérifier résultat JSON si vous postez formulaire en ajax jQuery. Je n'utilise pas jquerymobile donc je ne sais pas comment ça marche côté client.

+0

Mais je veux que cette requête ajax renvoie la page, car le côté client de jQueryMobile récupère les nouvelles pages via ajax. – Brett

Questions connexes