Keine Ahnung, ob dies in der PR oder Beta passiert ist, aber wenn ich eine Erweiterungsmethode auf erstelle HtmlHelper
, wird dies auf einer von Razor betriebenen Seite nicht erkannt:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Ich habe es dem <Namespaces>
Abschnitt hinzugefügt in Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Beim Versuch, die Seite anzuzeigen, wird jedoch ein Kompilierungsfehler ausgegeben:
@Html.Foo()
Wenn ich die Seite mit WebForms neu erstelle, funktioniert es einwandfrei . Was ist das Problem?
Problemumgehung
Wenn ich es @using SomeNamespace.Extensions
in meine Razor-Ansicht einbeziehe, funktioniert es, aber ich möchte es lieber einfach habenWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
Swilliams
quelle
quelle
Antworten:
Seit der Beta verwendet Razor einen anderen Konfigurationsabschnitt zum globalen Definieren von Namespace-Importen. In Ihrer
Views\Web.config
Datei sollten Sie Folgendes hinzufügen:Verwenden Sie das MVC 3-Upgrade-Tool, um automatisch sicherzustellen, dass Sie die richtigen Konfigurationswerte haben.
Beachten Sie, dass Sie die Datei möglicherweise schließen und erneut öffnen müssen, damit die Änderungen vom Editor übernommen werden.
quelle
Wie aus der akzeptierten Antwort hervorgeht, können Sie allen Ansichten "using" hinzufügen, indem Sie sie zum Abschnitt der Konfigurationsdatei hinzufügen.
Aber für eine einzelne Ansicht könnten Sie nur verwenden
quelle
Ich hatte den gleichen Fehler in einer MVC 4-Anwendung mit Razor. Bei dem Versuch, die Dateien web.config zu bereinigen, habe ich die beiden
webpages:
Konfigurationswerte entfernt:Sobald ich diese Konfigurationswerte wiederhergestellt habe, wurden die Seiten korrekt kompiliert und die Fehler bezüglich der
.Partial()
Erweiterungsmethode verschwanden.quelle
Ich hatte dieses Problem in VS 2015. Folgendes hat es für mich gelöst:
Suchen Sie in den Appsettings nach "Webseiten: Version" und aktualisieren Sie sie auf Version 3.0.0.0. Meine web.config hatte
und ich habe es aktualisiert
quelle
Ich habe festgestellt, dass das Einfügen dieses Abschnitts in meine web.config für jeden Ansichtsordner das Problem gelöst hat.
quelle
0.0.0.0-2.0.0.0
auf1.0.0.0
), und die/View/web.config
Datei überschreibt dies nicht. (Ich glaube auch nicht, dass Sie es in jedem brauchen/View/Subfolder/
)Dieser Fehler weist darauf hin, dass Sie die Rasiermaschine nicht ordnungsgemäß mit Ihrem Projekt verknüpft haben.
Lösung: Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Webprojekt und wählen Sie "Nuget-Pakete verwalten ...". Installieren Sie dann "Microsoft ASP.NET Razor". Dadurch wird sichergestellt, dass das ordnungsgemäße Paket installiert ist, und die erforderlichen Einträge werden in die Datei web.config eingefügt.
quelle
In meinem Fall verwenden Sie VS 2013 und es wird MVC 3 nicht nativ unterstützt (selbst wenn Sie ./Views/web.config ändern): https://stackoverflow.com/a/28155567/1536197
quelle
Da ASP.NET MVC 3 RTM nicht verfügbar ist, ist für Razor kein Konfigurationsabschnitt erforderlich. Und diese Abschnitte können sicher entfernt werden.
quelle