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-