2009-02-26 7 views
3

Je crée une application avec ASP.NET MVC et j'ai besoin d'une interface de style assistant sur une de mes pages. Voici ce que je suis en train de faire:
J'ai créé une page avec 5 divs. Tous ont "display: none" dans le fichier css. Lorsque l'utilisateur accède à la page pour la première fois, je l'utilise jquery pour montrer la première étape en utilisant:Comment créer un assistant ASP.NET MVC avec prise en charge du bouton de retour?

$("#callStep1").show(); 

La première étape a une liste de sélection et lorsque l'utilisateur effectue une sélection, le code suivant est exécuté:

$("#callStep1").hide(); 
$("#callStep2").show(); 

Cela continue jusqu'à ce que l'utilisateur atteigne l'étape 5 et clique sur le bouton Envoyer. Tout fonctionne bien, sauf si je suis aux étapes 2, 3, 4 et 5 et que j'appuie sur le bouton de retour. Cela me ramène à la page où j'étais avant, alors que je voulais vraiment passer à l'étape précédente.

Comment est-ce que je peux faire ce travail? J'ai vu quelques exemples en utilisant "#" et en créant des liens sur la page, mais je ne sais pas s'il y a un meilleur moyen.

Des suggestions?

Répondre

4

Si vous ne devez absolument pas AJAX sur la page de l'assistant, il est possible de le faire en retournant différentes vues après un POST forme réussie.

Dans le contrôleur:

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult DoSomethingLong(int somethingId, int step) 
{ 
    MyModelType myModel = MyModelFactory.Fetch(somethingId); 

    switch(step) 
    { 
    case 1: 
     return View("Step1", myModel); 
     break; 
    case 2: 
     return View("Step2", myModel); 
     break; 
    } 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult DoSomethingLong(int somethingId, int step) 
{ 
    MyModelType myModel = MyModelFactory.Fetch(somethingId); 

    if (TryUpdateModel(myModel)) 
    { 
     //Successful update. Send to next step. 
     return RedirectToAction("DoSomethingLong", new {somethingId = somethingId, step = step + 1} 
    } 
    else 
    { 
     //Update failed, redisplay current View with validation errors. 
     return View(myModel); 
    } 
} 
4

Mettre en oeuvre Ajax liens entraîné dans un complètement discret et accessible de manière (également connu sous le nom Hijax) avec soutien à l'arrière/avant des boutons de navigation et bookmarking du navigateur. Améliorer également les liens DHTML comparables .

http://www.stilbuero.de/jquery/history/#Chapter_3

Hijax (wikipedia)

+1

pourrie est le lien, quelqu'un jette des fruits frais là-dessus. – MrBoJangles

Questions connexes