Je ne sais pas si cela se produisait dans le PR ou la Bêta, mais si je crée une méthode d'extension sur HtmlHelper
, elle n'est pas reconnue dans une page alimentée par Razor:
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 cela génère une erreur de compilation lors de la tentative d'affichage de la page:
@Html.Foo()
Si je recrée la page avec WebForms, cela fonctionne très bien. Quel est le problème?
solution de contournement
Si j'inclus @using SomeNamespace.Extensions
dans ma vue Razor, cela fonctionne, mais je préfère de loin l'avoir dansWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
swilliams
la source
la source
Réponses:
Depuis la version bêta, Razor utilise une section de configuration différente pour définir globalement les importations d'espaces de noms. Dans votre
Views\Web.config
fichier, vous devez ajouter ce qui suit:Utilisez l' outil de mise à niveau MVC 3 pour vous assurer automatiquement que vous avez les bonnes valeurs de configuration.
Notez que vous devrez peut-être fermer et rouvrir le fichier pour que les modifications soient prises en compte par l'éditeur.
la source
Comme la réponse acceptée le suggère, vous pouvez ajouter "using" à toutes les vues en ajoutant à la section du fichier de configuration.
Mais pour une seule vue, vous pouvez simplement utiliser
la source
J'ai eu cette même erreur dans une application MVC 4 utilisant Razor. Pour tenter de nettoyer les fichiers web.config, j'ai supprimé les deux
webpages:
valeurs de configuration:Une fois que j'ai restauré ces valeurs de configuration, les pages se compileraient correctement et les erreurs concernant la
.Partial()
méthode d'extension disparaissaient.la source
J'ai eu ce problème dans VS 2015. Ce qui suit l'a résolu pour moi:
Recherchez "pages Web: Version" dans les paramètres de l'application et mettez-le à jour vers la version 3.0.0.0. Mon web.config avait
et je l'ai mis à jour pour
la source
J'ai trouvé que mettre cette section dans mon web.config pour chaque dossier de vue le résolvait.
la source
0.0.0.0-2.0.0.0
vers1.0.0.0
), et le/View/web.config
fichier ne remplace pas cela. (De plus, je ne pense pas que vous en ayez besoin dans tous/View/Subfolder/
)Cette erreur vous indique que le moteur de rasoir n'est pas correctement associé à votre projet.
Solution: Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur votre projet Web et sélectionnez "Gérer les packages Nuget ...", puis installez "Microsoft ASP.NET Razor". Cela garantira que le package correctement est installé et ajoutera les entrées nécessaires dans votre fichier web.config.
la source
Dans mon cas, utilisez VS 2013, et il ne prend pas en charge MVC 3 de manière native (même si vous changez ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
la source
Étant donné qu'ASP.NET MVC 3 RTM est disponible, il n'est pas nécessaire de créer une section de configuration pour Razor. Et ces sections peuvent être supprimées en toute sécurité.
la source