2008-09-23 7 views
1

Ok, je suis un débutant pour les applications Web ASP.NET ... et les applications Web en général. Je fais juste un peu d'une application de jeu pour un outil interne au travail.Comment faire passer le contexte dans une application Web ASP.NET MVC

donné ce tutoriel ...

http://www.asp.net/learn/mvc-videos/video-395.aspx

L'exemple a essentiellement une tasklist mondiale. Donc, si je voulais faire la même chose, mais maintenant je veux maintenir des tâches pour les projets. Je sélectionne maintenant un projet et j'obtiens la liste des tâches pour ce projet. Comment puis-je conserver le contexte du projet que j'ai sélectionné lorsque j'interagis avec les tâches? Est-ce que je l'encoder dans le lien en quelque sorte? ou le gardez-vous dans une sorte de données de session? ou d'une autre manière?

Répondre

0

ok, De ce que je peux dire, la meilleure option semble être à l'enregistrer dans les données de session

0

URL RESTful, champs cachés et les cookies de session sont vos amis.

1

J'utilise:

    état de session
  • pour l'état qui devrait durer plusieurs demandes, par exemple lors de l'utilisation des assistants Je ferais bien attention de ne pas mettre trop de données ici car cela peut entraîner des problèmes d'évolutivité. TempData pour les scénarios dans lesquels vous souhaitez uniquement que l'état soit disponible pour la requête suivante (par exemple, lorsque vous redirigez vers une autre action et que vous souhaitez que cette action ait accès à l'état, mais vous ne voulez pas qu'elle traîne après cela)
  • Champs de formulaire masqués [input type = "hidden"] pour l'état qui se rapporte aux données de formulaire et que je veux que le contrôleur sache, mais je ne veux pas que ces données soient affichées. Peut également être utilisé pour pousser l'état au client afin de ne pas surcharger les ressources du serveur.
5

Comme il semble que vous ayez plusieurs projets avec un certain nombre de tâches chacun, il serait préférable de laisser le projet être défini dans l'URL. Cela nécessiterait une route telle que "/projects/{project}/tasks". Il suit le principe de l'URL RESTful (c'est-à-dire que l'URL décrit le contenu). L'utilisation de l'état de la session ne fonctionnera pas si un utilisateur a éventuellement ouvert différents projets dans plusieurs fenêtres de navigateur. Disons que je me connecte à votre système et que vous sélectionnez deux projets s'ouvrant dans deux onglets. Tout d'abord, la session est définie sur le projet du premier onglet ouvert, mais dès que le deuxième onglet est chargé, la session est remplacée par ce projet. Si je fais alors quelque chose dans le premier onglet, il sera enregistré pour le second projet.

Questions connexes