Gibt es eine Art Magie, die ich verwenden muss, um die Namespaces im pages/namespaces
Element in der Webkonfiguration abzurufen?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Das obige will einfach nicht funktionieren. Ich weiß, dass der Namespace in Ordnung ist, denn wenn ich ihn @using MyCustomHelpers
oben auf die Seite setze, funktioniert er auf magische Weise.
Dies ist so, dass ich das Html.SomeFunction()
zum Laufen bringen kann, ohne @using
oben auf alle meine Seiten setzen zu müssen
asp.net-mvc-3
razor
MyNameIsJob
quelle
quelle
<system.web.webPages.razor>
Konfigurationsabschnitt sollte bereits in THAT Web.Config!Antworten:
Update : Bitte werfen Sie einen Blick auf meine aktualisierte Antwort, die für MVC 3 RC gilt: Razor HtmlHelper Extensions (oder andere Namespaces für Ansichten) Nicht gefunden
Dies hat sich zwischen MVC 3 Preview 1 und MVC 3 Beta (erst heute veröffentlicht) geändert. In Vorschau 1 verwendete Razor den Konfigurationsabschnitt für WebForms-Namespaces. In der Beta gibt es jedoch einen neuen Konfigurationsabschnitt, der von dem WebForms-Abschnitt getrennt ist. Sie müssen Folgendes zu Ihrer web.config-Datei hinzufügen (oder einfach mit einem brandneuen Projekt aus der Vorlage beginnen):
Beachten Sie, dass Sie möglicherweise die Datei schließen und erneut öffnen müssen, damit die Änderungen vom Editor übernommen werden.
Beachten Sie, dass in web.config weitere Änderungen an den Anforderungen erforderlich sind, damit Razor in MVC3 Beta funktioniert. Sehen Sie sich daher am besten die
~\View\Web.config
Datei an, die in den Beta-Projektvorlagen enthalten ist.quelle
pageBaseType="System.Web.Mvc.WebViewPage"
Attribut auch erforderlich ist. Ich habe Ihre Antwort aktualisiert.Wenn Sie Ihre Namespace-Deklaration im
Web.config
Stammordner "Ansichten" und / oder im Ordner "Ansichten" des aktuellen Bereichs ablegen (je nachdem, wo sich Ihre Ansicht befindet), sollte dies wie erwartet funktionieren.quelle
Ich habe diese http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx gefunden, in der erklärt wird, wie Sie all Ihren Rasiermesserseiten einen benutzerdefinierten Namespace hinzufügen.
Grundsätzlich können Sie dies machen
und fügen Sie den folgenden Code in Ihre AssemblyInfo.cs ein
Die Methode InitializeApplication wird vor Application_Start in global.asax ausgeführt
quelle
Eine andere Technik besteht darin, Ihre Helfer-Erweiterungsklasse einfach in einen System-Namespace zu stellen, der standardmäßig bereits von der View Engine enthalten ist. Beispielsweise:
Auf diese Weise wird alles angezeigt, solange auf die Bibliothek verwiesen wird, die die Klasse enthält. Da Sie eine
System.Web.Mvc
Klasse erweitern, erscheint es vernünftigerweise akzeptabel, die Erweiterungsmethoden in denselben Namespace zu stellen.quelle
Versuchen Sie, die Ansicht zu schließen und erneut zu öffnen, nachdem Sie sichergestellt haben, dass die Änderungen an der web.config im Stammverzeichnis der Ansicht vorgenommen wurden.
Das Schließen und Wiedereröffnen hat mein Problem behoben.
Siehe hier:
ASP.NET MVC 4-Namespace-Problem in der Rasiereransicht
quelle