ViewContext.RouteData.Valeurs[“action”] est nulle sur le serveur... fonctionne très bien sur l'ordinateur local
J'ai un étrange problème où ViewContext.RouteData.Valeurs["action"] est nul sur mon serveur de test, mais fonctionne très bien sur ma machine de dev (asp.net serveur de développement).
Le code est simple:
public string CheckActiveClass(string actionName)
{
string text = "";
if (ViewContext.RouteData.Values["action"].ToString() == actionName)
{
text = "selected";
}
return text;
}
J'obtiens l'erreur sur la ViewContext.RouteData.Valeurs["action"], ligne. L'erreur est:
Détails De L'Exception: System.NullReferenceException: la référence d'Objet n'est pas définie à une instance d'un objet.
Toute aide est appréciée. Merci à l'avance.
Avez-vous trouvé une solution à cela? J'ai un problème similaire maintenant...
Non, je n'ai pas, j'ai fini par la modification de la logique et de la façon dont il fonctionne.
Non, je n'ai pas, j'ai fini par la modification de la logique et de la façon dont il fonctionne.
OriginalL'auteur rksprst | 2009-08-09
Vous devez vous connecter pour publier un commentaire.
Avez-vous des différentes versions de asp.net mvc sur votre dev et les serveurs de transfert? Essayez de copier le Système.Web.Mvc localement sur le serveur de test et voir si cela résout-il. (Clic droit sur la référence, choisissez propriétés et modifiez la Copie Locale de vrai)
Cela peut ou peut ne pas aider votre situation, mais ici, c'est un helper extension, je l'ai volé à partir d'un modèle MVC asp.net/mvc:
peut-être essayer le ci-dessus sur le Système.Web.Des Abstractions Du Système.Web.Les Extensions Du Système.Web.Mvc, et du Système.Web.De routage? Je pense que ceux sont les quatre références utilisées par asp.net.
Quand j'ai réédité, je n'ai "copie locale" sur tout le MVC liées dll... donc ces, plus quelques autres régulièrement asp.net dll, juste au cas où. Je ne vois pas pourquoi il faudrait travailler sur dev et pas sur le serveur de test.
OriginalL'auteur Jim Schubert
Je ne peux pas vous dire pourquoi cela fonctionne un endroit et pas à un autre, mais:
Vous devez casser le code en plusieurs lignes pour comprendre exactement ce qui est null (var route = ViewContext.RouteData; var values = ...;), etc.
Où êtes-vous appeler CheckActiveClass? À quelle heure? Où est-il situé? ViewContext n'est pas toujours disponible partout. Mais vous aurez une meilleure idée de ce qui n'est pas disponible après le #1.
James
OriginalL'auteur James S
Essayez d'utiliser les capitales
Chaîne currentController = ViewContext.RouteData.Valeurs["Controller"].ToString();
Chaîne currentAction = ViewContext.RouteData.Valeurs["Action"].ToString();
Chaîne currentID = ViewContext.RouteData.Valeurs["ID"].ToString();
OriginalL'auteur Luke