begin process at 2012 02 14 05:28:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

Autre

 > 

MVC Probleme ViewData / beginForm


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

MVC Probleme ViewData / beginForm

vendredi 3 juillet 2009 à 16:36:01 | MVC Probleme ViewData / beginForm

WiDOC

Bonjour,

Voila je développe un intranet avec asp.net MVC / VB qui sert a suivre la production d'une entreprise donc :

Lorsque une personne se log dessus il a accès à certain menu ou pas et aussi à des sous menu qui correspondent aux différentes fonctions dans l'entreprise
tout cela est géré par nos tables sans soucis.

- Par conséquent dans mon modèle -> je récupère dans un dataread la liste des menu accessible pour la personne
- Dans mon controlleur -> je récupère ce dataread comme ceci : 
            ViewData("id_menu") = Models.Home.Menu()
où "Models.Home.Menu()" est la procedure qui me retourne mon Dataread
puis je "return View"
- Ma vue retourné se place dans site.Master <asp:ContentPlaceHolder>
et dans site.Master je génère mes actionLink qui mèneront aux différentes IHMs de mon application.(qui elles se metteront dans le placeHolder du site.Master)

tout cela marche très très bien  " MAIS " (bah oui si il n'y avait pas de "mais" je ne serai pas la :s)
mais mais mais ,,,, lorsque je vais dans une de ses applications ou tout autre lien je ne passe donc pas par le controleur Index et apperement le ViewData se reset.
DONC je perd le ViewData("id")  (qui je le rapel est écrit dans le controleur Index) DONC mon menu disparait....

le seul moyen que j'ai trouvé c'est de réécrire ViewData("id_menu") = Models.Home.Menu() DANS TOUS MES CONTROLEURS
.....berk !!....sa fait quand même un accès à la base pour rien et j'ai deux menus à gérer ainsi. (puis rien que dans le code c'est crade.)

je cherche un moyen de ne rafraichir QUE le ContentPLaceHolder dans le site.Master la ou toute mes vues vont se percher pour que le script qui genere le menu avec le ViewData("id_menu") n'ai pas à se réexecuter (puisqu'il sera vide)
Alors le problème c'est que le UpdatePanel (que je n'arrivait déja pas a mettre en place a 100%)  ne respecte pas la logique MVC (c'est pour ça que sa marchait pas)
J'ai vu qu'il y avait de nouveaux outils implémenter dans MicrosoftAjax.js à utiliser.
Le probleme c'est que les soluce sont souvent écrit en C#  (je suis en VB) et que je n'arrive pas à appliquer leurs solutions parce qu'ils n'utilisent pas le contentPlaceHolder ou que je ne comprend pas comment écrire le BeginForm comme sur cette exemple.
http://weblogs.asp.net/dwahlin/archive/2009/05/14/emulating-the-updatepanel-in-asp-net-mvc-1-0-with-ajaxhelper.aspx

Si quelqu'un peut m'aider où si je ne suis pas assez clair n'hésitez surtout pas, je ne suis sans doute pas le meilleur des orateurs.

-WiDOC-
mercredi 8 juillet 2009 à 00:42:01 | Re : MVC Probleme ViewData / beginForm

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour,

Cela me parait normal :-)
Il n'y a pas de persistence entre les vues, tu dois donc gérer manuellement cette persistence. Ce que tu peux faire, c'est retourné un objet complexe au niveau de ton ViewData (ViewData.Model = Pouet()  de mémoire)  Ensuite tu fais hériter ton objet complexe d'un objet de base ou tu auras la propriété id_menu.

Au niveau des UpdatePanels, ASP.net MVC n'a pas du tout la meme logique, il faut donc éviter d'essayer de reprendre le comportement des webforms ! La solution proposé par Microsoft c'est d'utiliser des vues que tu vas mettre à jour dynamiquement via JavaScript. Ce n'est pas une solution pour contourner le problème rencontré, et tu auras beaucoup de limitation en agisant ainsi.

Je te conseille vivement de regarder comment transiter un objet complexe entre le controlleur et ta vue (via ViewData.Model je crois) ainsi grace à l'héritage, tu pourras facilement gérer ton menu. Bien sur cela nécessite de faire sa propre persistance, ce qui était habituellement fait via le viewstate.



Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
mercredi 15 juillet 2009 à 11:52:27 | Re : MVC Probleme ViewData / beginForm

WiDOC

Je reviens sur ce poste ..
déjà merci d'avoir répondu.

J'ai contourné le problème mais je sais pas si c'est très respectueux MVC.

en fait dans mon Modele j'ai un fichier "globalVariable", et une de ces variables est un dataset que j'alimente avec ma requete depuis mon controleur, ensuite dans ma masterpage en code behind sur l'evenement LOAD je lis le dataset et il se case comme je veux ensuite....

Donc comme tu dis je crée ma propre persistance...
après ce fichier GlobalVariable je pense n'a rien a faire dans le dossier "Modèles" mais je changerai plus tard...

mercredi 15 juillet 2009 à 14:01:23 | Re : MVC Probleme ViewData / beginForm

jesusonline

Membre Club Administrateur CodeS-SourceS


Bonjour,

Comment est stocké tes variables ? via un membre static ? Dans ce cas tu vas avoir des soucis, car les membres statics sont partagés entres TOUS les utilisateurs.

Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant

jeudi 16 juillet 2009 à 09:04:22 | Re : MVC Probleme ViewData / beginForm

WiDOC

ben...j'ai un fichier GlobalVariable.vb dans lequel je met mes variables pour remplir mes menus (puisque je doit les remplir chaque fois que je clic sur une vue puisque rien ne reste), que je fait hérité dans le code-behind de mon site.Master.
De la je peut recup' mes variables pour générer mes menus...

sinon pour ta solution je crois avoir trouvé comment utilisé le viewdata.model mais je ne comprend pas la suite de ta phrase
---> "tu fais hériter ton objet complexe d'un objet de base ou tu auras la propriété id_menu. "

jeudi 16 juillet 2009 à 10:06:47 | Re : MVC Probleme ViewData / beginForm

WiDOC

en fait je ne vois tout simplement pas en quoi ta solution règle le problème de persistance...qu'importe ce que j'envoi en viewdata..puisque c'est perdu dès que l'utilisateur part sur une autre vue...d'où ma petite rustine (oui une rustinette quoi)



Cette discussion est classée dans : menu, site, id, mvc, viewdata


Répondre à ce message

Sujets en rapport avec ce message

SSI ou autre chose [ par Bruto ] Je cherche à réaliser un site intranet sur la même logique que celui du site d'aspfr.com. En effet, je dispose de ma source menu, source contenu et d' Avec quoi je fais ca [ par kenses ] " je veux faire un site " ce site a pour fonction de comparer les tarifs de divers magasinspour cela j'ai ecidé d'utiliser des menus deroulant ces m liens internet [ par tahbre ] Hello helloBon moi j'ai un problème de lien:J'ai près de 300 adresses que je télécharge surle site morningstar.frJ'ai aspiré une partie du site et j'a Recuperation d'une valeur [ par magicaldoremi ] Bonjour,J'ai un soucis: lorsque j'envoie ma page je devrais recuperer deux valeurs : id_mag et id_chef or je recupere l'id_chef et l'id_mag est rempla menu [ par zaytoun ] bonjour;je developpe un site web avec VS2005 commportant un menu (le controle menu).alors mon probleme est le suivant: je ne veux pas donner à l'utili Developper une treeview [ par Skinou ] Bonjour a tous, Je suis débutant en ASP.NET et là je suis en train de faire un petit site. J'ai fait un fichier web.sitemap pour gérer l'arborecence d MasterPage/ Menu / ContentPlaceHolder [ par David REI ] Bonsoir à tous!Je travaille actuellement sur un site Web en utilisant le framework Ajax ASP.NET. J'utilise une masterpage contenant une barre de navig menu [ par eteasdale ] Je cherche depuis environ 2 mois à faire exactement comme ce que l'on voit sur le site:http://shangtai.it45.com/busdeals/index.jspJe veux le faire plu menu multi recherche [ par maousse2 ] Bonsoir la communauté :)mon profil : graphiste plutot webdesigner qui adapte des script tout fait ...je suis actuellement couché sur le livre de jean ASP Menu dépliant comme sur ce site [ par porikito ] Bonjour,  Je suis en train faire un mini intranet pour mon boulot, et je cherche à faire un menu gauche dans le même style que celui de ce site : <fon


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales