Je viens de créer un projet ASP.NET MVC 4 et j'ai utilisé Visual Studio 2012 RC pour créer un contrôleur et des vues de rasoir pour Index
et des Create
actions.
Lorsque je suis arrivé pour exécuter l'application et que j'ai accédé à la Create
vue, l'erreur suivante s'est produite:
Message d'erreur du compilateur: CS0103: le nom «Scripts» n'existe pas dans le contexte actuel
Le problème est le code suivant qui a été ajouté automatiquement au bas de la vue:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Pourquoi les scripts n'existent-ils pas?
J'ai regardé la classe de page Web de base dans Assembly System.Web.Mvc.dll, v4.0.0.0
Je peux voir les propriétés d'assistance suivantes disponibles:
- Ajax
- Html
- URL
Mais rien ne s'appelle Scripts.
Des idées?
ÉDITER:
Mon fichier Web.config ressemble à ceci (intact de celui créé par Visual Studio):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
EDIT # 2:
Les gens bloguent sur l'utilisation de l' @Scripts
aide:
Pourtant, après avoir installé Visual Studio 2012 RC sur une nouvelle installation de Windows 8, je ne peux toujours pas l'utiliser @Scripts
même si Visual Studio l'ajoute à la vue générée!
Les solutions sont présentées ci-dessous.
Je ne sais pas comment fermer cela, car au final, une mise à jour a semblé résoudre le problème. J'ai revérifié que j'avais effectué une installation propre, en utilisant un nouveau projet. Mais le même projet défaillant que j'avais fait fonctionne bien maintenant après diverses mises à jour et aucune intervention manuelle évidente. Merci pour toutes ces réflexions mais il y avait définitivement un problème à l'époque;)
la source
<system.web.webPages.razor> <pages pageBaseType=""> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> etc... </pages>
Réponses:
La clé ici est d'ajouter
aux DEUX fichiers web.config. Mon scénario était que j'avais la référence System.Web.Optimization dans le projet et le web.config principal / racine mais @Scripts ne fonctionnait toujours pas correctement. Vous devez ajouter la référence de l'espace de noms au fichier Views web.config pour le faire fonctionner.
METTRE À JOUR:
Depuis la sortie de MVC 4 System.Web.Optimization est désormais obsolète. Si vous commencez avec une solution vierge, vous devrez installer le package nuget suivant:
Vous devrez toujours référencer System.Web.Optimization dans vos fichiers web.config. Pour plus d'informations, consultez cette rubrique:
Comment ajouter une référence à System.Web.Optimization pour MVC-3-convert-to-4 app
Comme beaucoup l'ont souligné, le redémarrage de VS pourrait être nécessaire après les étapes ci-dessus pour que cela fonctionne.
la source
Install-Package Microsoft.AspNet.Web.Optimization
partir d'un modèle ASP.NET MVC4 vierge car il n'est pas inclus par défaut.@Styles
et@Scripts
sont 2 nouveaux assistants fournis par laSystem.Web.Optimization
bibliothèque. Comme son nom l'indique, ils regroupent et réduisent respectivement les fichiers ou les ressources CSS et JavaScript.Essayez d'inclure l'espace de noms
System.Web.Optimization
par@using
directive ou viaweb.config
http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinificationMETTRE À JOUR
Microsoft a déplacé le regroupement / la minification dans un package distinct appelé
Microsoft.AspNet.Web.Optimization
. Vous pouvez télécharger l'assemblage à partir de nuget .Ce message vous sera utile.
la source
System.Web.Optimization
espace de noms n'est PAS obsolète, l'System.Web.Optimization.dll
est.Il manquait une petite étape de ce qui précède, que j'ai trouvée sur un autre post. Après avoir ajouté
dans vos
~/Views/web.config
espaces de noms, fermez et rouvrez Visual Studio. C'est ce que je devais faire pour que cela fonctionne.la source
J'utilise des zones, et je viens de rencontrer ce problème, je viens de copier les espaces de noms du web.config racine vers le web des zones. config et ça marche maintenant !!
la source
J'ai eu le même problème et j'ai utilisé WinMerge pour m'aider à retrouver cette trace. Mais au fur et à mesure de mes recherches, j'ai trouvé que Rick avait le billet de blog parfait pour cela.
Résumé:
<add namespace="System.Web.Optimization"/>
aux deux fichiers web.configInstall-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
la source
J'ai eu le même problème:
La version System.Web.Optimization que j'utilisais était obsolète pour MVC4 RC.
J'ai mis à jour mes packages à l'aide du gestionnaire de packages dans VS 2010.
Dans ce blog MSDN , M. Andy explique comment mettre à jour votre projet MVC 4 Beta vers MVC 4 RC. La mise à jour de mes packages a permis de résoudre les scripts (en particulier l'optimisation Web):
Pour installer le dernier package System.Web.Optimization, utilisez la console du gestionnaire de packages (Outils -> Library Package Manager -> Package Manager Console) et exécutez la commande ci-dessous:
Utilisez le fichier System.Web.Optimization inclus dans le package dans vos références.
Pour mettre à jour d'autres packages: menu Outils -> Library Package Manager -> Manage NuGet Packages for Solution.
la source
Créez une nouvelle application Internet MVC 4 RC et exécutez-la. Accédez à Login qui utilise le même code
Ce qui permet à Login.cshtml de fonctionner est le fichier Views \ Web.config (pas la version racine de l'application) contient
Pourquoi votre vue Créer ne fonctionne-t-elle pas et votre connexion l'est?
la source
Importez System.Web.Optimization en haut de votre vue de rasoir comme suit:
la source
J'ai rencontré ce problème, cependant lors de l'exécution de la commande:
J'ai reçu le message énigmatique (je dois aimer un bon jeu de mots avant la première tasse de café):
Je l'exécute sur Windows XP SP3 (pas par choix) et ce que j'ai trouvé, c'est que j'ai dû suivre les instructions publiées par l'utilisateur artsnob sur le forum ASP.NET
Une fois que j'ai exécuté cela, je pouvais alors exécuter la ligne de commande pour mettre à jour Web.Optimization.
J'espère que cela évite à quelqu'un de creuser.
la source
Ecrivez
la source
J'ai effectué une mise à niveau de la version bêta vers la version RC et j'ai rencontré un problème de «Scripts». Surfer sur le Web et la solution finale est ce que N40JPJ a dit plus un autre workaroudn:
Copiez ce qui suit dans View \ Web.config:
et les éléments suivants dans View \ Shared_Layout.cshtml
J'espère que ça aide.
la source
if (IsSectionDefined())
sauf si vous fournissez uneelse
clause. Le fait que vous disiezrequired: false
déjà permet de ne pas définir cette section et, dans ce cas, la section sera omise. Il s'agit donc d'un code supplémentaire inutile.Apparemment, vous avez créé un type de projet «Vide» sans dossier «Scripts». Mon conseil -créer un type de projet 'Basic' avec un dossier 'Scripts' complet.
En ce qui concerne tous les développeurs.
la source
il suffit de supprimer / masquer le code de la vue de création et d'édition du rasoir de votre contrôleur.
la source
bonne chance...
la source
Un de plus pour le pot - les âges passés à essayer de résoudre le même problème - même s'il a été défini dans le web.config pour root et la racine de Views. Il s'avère que je l'ai ajouté par erreur à l' élément
<system.web><pages><namespaces>
, et non à l'<system.web**.webPages.razor**><pages><namespaces>
élément.Vraiment facile de manquer ça!
la source
Lorsque j'entre sur une page qui possède ce code:
Cette erreur se produit: Erreur. Une erreur s'est produite lors du traitement de votre demande.
Et cette exception est enregistrée sur mes journaux:
J'ai essayé tous les conseils sur cette page et aucun d'eux n'a été résolu pour moi. J'ai donc regardé mon dossier Packages et j'ai remarqué que j'avais deux versions pour System.Web.Optmization.dll:
Mon projet faisait référence à l'ancienne version bêta. J'ai seulement changé la référence à la nouvelle version (69 Ko) et tout a bien fonctionné.
Je pense que cela pourrait aider quelqu'un.
la source
Cela a une solution évidente. J'ai eu le même problème plus tard. Sans rapport avec les références d'assemblage ou .... Cela se produira dans l'appel hiérarchique des vues partielles MVC, lorsque vous avez des structures de page complexes. Donc, appeler / rendre chaque partie séparément sur chaque page (peut-être une page maître ou partielle) fera en sorte de ne pas voir les parties requises de la page comme le code ci-dessous:
Cela force simplement la page à rechercher et à rendre la section associée et en cas d'échec, vous affiche un message d'erreur comme vous.
Je vous suggère donc de tracer vos pages (comme la trace de programme) du maître à tous ses partiels pour détecter les dépendances . Ce sera peut-être un travail terrible, mais aucun autre choix n'est disponible ici.
Non pas que, selon mon expérience, certaines situations conditionnelles dans la programmation empêchent de vous montrer la bonne erreur à l'origine du problème.
la source
J'ai eu ce problème après avoir ajouté une zone à un projet qui n'en avait pas. Pour vous en débarrasser, copiez simplement le fichier web.config avec le dossier Vues racine dans le dossier Vues de la zone et il a commencé à fonctionner.
la source
Je résous ce problème dans MvcMusicStore en ajoutant cette partie de code dans _Layout.cshtml
et supprimez ce code de Edit.cshtml
Exécutez le programme inshallah fonctionnera avec vous.
la source
Pour moi, cela a résolu le problème, dans la console du gestionnaire de packages NuGet, écrivez ce qui suit:
la source
Lorsque j'ai commencé à utiliser MVC4 récemment, j'ai rencontré le problème ci-dessus lors de la création d'un projet avec les modèles vides. Étapes pour résoudre le problème.
TOOLS
->Library Package Manager
->Packager Manager Console
Collez la commande ci-dessous et appuyez sur EntréeInstall-Package Microsoft.AspNet.Web.Optimization
Remarque: attendez la réussite de l'installation.<namespace="System.Web.Optimization" />
Le package mentionné à l'étape 1 ajoutera quelques bibliothèques système dans les références de solution comme System.Web.Optimization n'est pas une référence par défaut pour les modèles vides dans MVC4.
J'espère que ça aide. Je vous remercie
la source
J'ai eu une erreur très similaire lors de la mise à niveau d'un projet de MVC3 vers MVC4.
Dans mon cas, j'avais des numéros de version obsolètes dans plusieurs de mes Web.Configs.
Ex:
Assurez-vous de consulter le Web.Configs dans chacun de vos répertoires Views.
Vous pouvez en savoir plus sur la mise à niveau d'un projet ASP.NET MVC 3 vers ASP.NET MVC 4 .
la source
Si vous avez ajouté à votre web.config et qu'il affiche toujours un message, vous devez alors fermer votre projet et le rouvrir, maintenant il existera et @ Styles.Render ("") et @ Scripts.Render () fonctionneront correctement.
la source
Essaye ça:
la source