Rasoir HtmlHelper Extensions (ou d'autres espaces de noms pour les vues) Pas Trouvé
Ne sais pas si cela se passait dans la PR ou Bêta, mais si je crée une méthode d'extension sur HtmlHelper
, il n'est pas reconnu dans un Rasoir alimenté page:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Je l'ai ajouté à la <Namespaces>
section dans Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Mais il génère une erreur de compilation lorsque vous essayez d'afficher la page:
@Html.Foo()
Si je recréer la page avec WebForms il fonctionne très bien. Quel est le problème?
Solution de contournement
Si je comprend @using SomeNamespace.Extensions
dans mon Rasoir vue, il fonctionne, mais je préfère l'avoir juste en Web.config
- Même la solution de contournement ne fonctionne pas pour moi. La méthode d'extension apparaîtra dans intelliSense, mais jette une erreur de compilation lors de l'exécution.
- +1 pour le @à l'aide de solution de contournement. Je la préfère dans mon cas.
- solution de contournement est ok pour une vue unique. Mais pour de multiples points de vue, le code de gestion devient un problème.
Vous devez vous connecter pour publier un commentaire.
Depuis la version Bêta, Rasoir utilise une autre section de configuration à l'échelle mondiale pour la définition de l'espace de noms des importations. Dans votre
Views\Web.config
fichier, vous devez ajouter les éléments suivants:Utiliser le MVC 3 outil de mise à niveau automatiquement pour vous assurer d'avoir la bonne config valeurs.
Note que vous pourriez avoir besoin de fermer et rouvrir le fichier pour que les modifications soient repris par l'éditeur.
<configSections>
déclaration ci-dessus et/ou les deux blocs de code, j'obtiens un "ne peut pas démarrer le débogage sur le serveur web, veuillez vérifier votre site web.config" etc. Je la sors, fonctionne très bien. Je suis en utilisant MVC 3. Toutes les pensées?Que l'on a accepté la réponse suggère que vous pouvez ajouter à "l'aide" à tous points de vue, en ajoutant à la section du fichier de configuration.
Mais pour un seul point de vue, vous pouvez simplement utiliser
J'ai eu ce même message d'erreur dans un MVC 4 application à l'aide d'un Rasoir. Dans une tentative pour nettoyer le web.les fichiers de configuration, j'ai enlevé les deux
webpages:
les valeurs de configuration:Une fois que j'ai restauré ces valeurs de configuration, les pages de dresser correctement, et que les erreurs concernant la
.Partial()
méthode d'extension disparu.J'ai eu ce problème en VS 2015.
La suite résolu pour moi:
Trouver des "pages:Version" dans le appsettings et le mettre à jour vers la version 3.0.0.0. Mon web.config avait
et j'ai mis à jour à
J'ai trouvé que le fait de mettre cet article sur mon site internet.config pour chaque dossier de vue résolu.
0.0.0.0-2.0.0.0
à1.0.0.0
), et le/View/web.config
fichier ne remplace pas que. (Aussi, je ne crois pas que vous en avez besoin dans chaque/View/Subfolder/
)Cette erreur vous indique que vous n'avez pas le moteur de rasoir correctement associés à votre projet.
Solution: Dans la fenêtre Explorateur de solutions, cliquez droit sur votre projet web et sélectionnez "Gérer les Packages Nuget..." puis installer "Microsoft ASP.NET Rasoir". Cela permettra de s'assurer que le paquet est installé et il va ajouter les entrées nécessaires dans votre site web.fichier de configuration.
Dans mon cas, utilisez VS 2013, et C'est pas en charge MVC 3 en natif (même de vous changer ./Vues/web.config): https://stackoverflow.com/a/28155567/1536197
Depuis ASP.NET MVC 3 RTM est sorti il n'est pas nécessaire pour la section de configuration pour Rasoir. Et ces sections peuvent être supprimés en toute sécurité.