2010-10-21 3 views
4

Je reçois un comportement génial avec les variables de session avec les pages Razor .cshtml. Essentiellement sur certaines pages, je vérifie si une variable de session est définie, et sinon je la mets. Je continue d'obtenir une référence d'objet nul. Je crois que c'est parce que finalement Razor est conçu pour MVC, et j'ai fait un peu de lecture sur le cycle de vie MVC et apparemment l'objet session est injecté à un point différent dans le lifecyde alors dire webmes asp.net. Donc, lorsque j'essaie de l'utiliser sur mes pages, il n'est pas encore disponible. Donc, ma question serait pour les sites simples basés sur Razor (pas encore MVC, mais qui bouge de cette façon) ce qui serait un moyen efficace de vérifier si une variable de session est définie (comme dire "niveau d'accès") qui est cochée assez souvent. Ce serait la première partie de la question.Webmatrix, Razor et Sessions

La deuxième partie de la question serait de savoir si c'est une mauvaise pratique, que devrais-je faire pour remplacer cette approche?

Nous vous remercions de votre participation.

+0

pouvez-vous ajouter le code pour une page simple qui reprend vos problèmes? – marcind

+0

si mis un simple @ {if (Session ["xxx"]! = Null) {bla bla ...}} Et vous obtiendrez l'erreur de temps en temps (oui casser les lignes). Si j'utilise l'une des méthodes de rendu telles que @RendorPage, les sessions semblent fonctionner correctement sur la page rendue. Encore une fois, je pense que c'est un problème de cycle de vie MVC, je me demandais juste si leur solution est un homme facile/paresseux. Sinon, je me dis que je vais changer la façon dont j'utilise les sessions, ce qui peut être une bonne chose en fonction des alternatives (les cookies cryptés disent pour un), mais c'est un peu décevant. Comme de nouveaux outils, n'aimez pas les anciens. – infocyde

+0

Peut-être que vous devez trouver un scénario plus explicite. De mon point de vue, la session fonctionne. –

Répondre

5

Les pages d'affichage rasoir dans ASP.NET MVC 3 s'exécutent de manière quasi-identique aux pages Web ASP.NET avec la syntaxe Razor. Et pour mémoire, Razor a d'abord été développé pour les pages Web et non pour MVC - nous l'avons ensuite retravaillé pour nous assurer qu'il était un «citoyen de première classe» dans les deux scénarios. En tant que tel, l'état de la session devrait fonctionner, quel que soit l'endroit où vous l'utilisez - depuis un fichier de pages Web, un contrôleur MVC ou même une vue MVC (bien que la plupart considèrent l'état de session dans une vue MVC est une mauvaise pratique).

+0

Eh bien, même des exemples simplistes ne fonctionnent pas de manière cohérente pour moi (parfois cela fonctionne, parfois non). Mais pour l'instant, je suppose que mon code ou mon serveur est en place (ne pensez pas que c'est le code, car cela fonctionne encore parfois, mais des choses plus étranges sont arrivées). Donc, je vais prendre cette réponse. – infocyde