Comment avez-vous accès aux variables de l'application dans asp.net mvc 3 rasoir point de vue?
- Je définir une variable d'Application dans mon global.asa.cs avec:
protected void Application_Start()
{
...
//load all application settings
Application["LICENSE_NAME"] = "asdf";
}
et puis essayez d'accéder avec mon rasoir vue comme:
@Application["LICENSE_NAME"]
et obtiens cette erreur:
Compiler Error Message: CS0103: The name 'Application' does not exist in the current context
quelle est la bonne syntaxe?
- Les variables d'Application? Comme dans l' .fichier de configuration appSettings? (Veuillez être plus précis)
- Il signifie l'état de l'Application des variables, si vous regardez le code c'est assez spécifique.
- Je pense qu'il signifie que les valeurs de l'état de l'Application de l'objet.
- Doublement de la noter. Merci. 😉
Vous devez vous connecter pour publier un commentaire.
Points de vue ne sont pas censés pour extraire des données à partir de quelque part. Ils sont censés utiliser les données transmises sous la forme d'un modèle de vue de l'action du contrôleur. Donc, si vous avez besoin d'utiliser ces données en vue de la bonne façon de le faire est de définir un modèle d'affichage:
votre contrôleur de l'action de la remplir d'où qu'il doit remplir (pour une meilleure séparation des préoccupations, vous pouvez utiliser un référentiel):
et enfin vos fortement typé affichage de la vue de cette information à l'utilisateur:
C'est le bon modèle MVC et c'est comment il devrait être fait.
Éviter les points de vue d'extraire des données comme des parasites, car aujourd'hui, c'est l'état de l'Application, le lendemain, c'est un
foreach
boucle, la semaine prochaine c'est une requête LINQ et en un rien de temps, vous finissez par écrire des requêtes SQL dans votre point de vue.@{Html.RenderAction("ActionName", "ControllerName");}
. L'Action a renvoyé une vue partielle.HttpContext.Current.Application["LICENSE_NAME"]
(ajoutée) ne devrait-elle pas?Vous pouvez obtenir l'Application en cours à l'aide de l'généré automatiquement
ApplicationInstance
de la propriété:Cependant, cette logique n'appartient pas à la vue.
Vous devriez être en mesure d'y accéder via
HttpContext.Current.Application[]
, cependant MVC meilleures pratiques de l'état que vous devriez probablement envisager l'adoption par le biais de votre Modèle de Vue.Bâtiment sur @Darin-Dimitrov modèle répondu ci-dessus, je suis passé d'un modèle dans une vue partielle, qui je l'ai chargé dans un _Layout page.
J'avais besoin de charger une page web à partir d'une ressource externe sur l'Application de la Charge, qui sera utilisé comme en-tête de navigation sur plusieurs sites. C'est dans mon Global.asax.cs
Voici mon Action de contrôleur de la vue partielle.
J'ai chargé la vue partielle dans le _Layout page comme celle-ci.
La vue partielle _Header.cshtml est très simple et juste en charge le html à partir de la variable d'application.
@HttpContext.Actuel.Application["valeur"]
J'ai eu ce problème dans un contrôleur MVC et a dû faire pleinement qualifié HttpContext pour que cela fonctionne ..