Frage

Die Frage ist einfach wie im Titel angegeben: Gibt es eine Möglichkeit, Rasiererhelfer außerhalb von 'app_code' zu haben?

Beispiel (HTMlex.cshtml-Datei): generasacodicetagpre.

Ich frage das, weil ich nicht wirklich etwas anderes habe, um app_code einzugeben;Ich möchte mein Projekt etwas anders strukturieren.

danke.

update: Ich möchte keine andere Erweiterungsart.Ich interessiere mich für nur reine Razor-Helfer, da Scott hier spricht: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-und-the-Helper-Syntax-in-razor.aspx

War es hilfreich?

Lösung

Die Frage ist einfach wie im Titel angegeben: Gibt es einen Weg von Rasiererhelfer außerhalb von 'app_code' haben?

nein, da ist nicht.

Andere Tipps

Sag niemals nie ...

methode one: (zur Verwendung in einem Webanwendungsprojekt)

Fügen Sie einfach ein Pre-Build-Ereignis hinzu, um Ihre Datei in den Ordner app_code zu kopieren.

(aber da die Datei wahrscheinlich in das Projekt aufgenommen werden muss, können Sie dem App_code-DI eine leere Datei mit demselben Namen hinzufügen und dann das Build-Ereignis, um es zu aktualisieren.)

(Hinweis, dass Sie, auch wenn Sie die Datei ursprünglich in den Ordner app_code setzen, werden Sie erstmals bis zum ersten Mal intelligend, also ist es trotzdem keinen Unterschied.)

methode zwei: (zur Verwendung in einer Klassenbibliothek, in der das Startprojekt eine Webanwendung ist)

In einer Klassenbibliothek ist der Ordner app_code nicht etwas Besonderes, um die Helferseite global haben zu können, müssen wir den Rasierercode überschreiben, da er nicht codiert ist, um globale Helfer nur für den Code in der App_code-Ordner.

Darüber hinaus ist der Rasierercode so konzipiert, dass er für globale Helfer ein Namespace basierend auf dem vollen Pfad erstellt, etwas, das Sie wahrscheinlich nicht interessiert sind.

Schließlich bleiben wir mit einem Problem, dass es keinen IntelliSense gibt, um all diese Probleme zu vermeiden, habe ich den folgenden Code geschrieben, vorausgesetzt, dass:

    .
  1. Ihre .cshtml (oder vbhtml) -Dateien werden in das Endergebnis des Endprojekts aus dem Ausgabe von kopiert
  2. Sie fügen eine Datei mit demselben Namen (oder .vb) mit demselben Namen wie der globale Helfer Dateiname hinzu, und legen Sie die Erstellung der Aktion auf "Compile" ein (diese Datei wird beim Start in IntelliSense automatisiert)
  3. Sie müssen die PreapplicationStartUpclass in der montageInfo.cs-Datei registrieren
  4. Sie müssen in der Methode PreapplicationStartupCode.Start () ersetzen, um dem relativen Pfad Ihrer globalen Helferseite in dem Ordner BIN zu geben, in der Reihenfolge der Abhängigkeit (dh wenn einer der globalen Helfer-Dateien Helfer in der anderen verwendet Datei, dann sollte es danach aufgelistet werden).
  5. In der CustomrazorcodeHost-Klasse müssen Sie die richtige Methode von postprocessgeneratedcode () auswählen, die für die installierte MVC-Version geeignet ist

    Hier ist der Code (aber man muss die entsprechende Anweisungen "mit" hinzuzufügen): generasacodicetagpre.

    Beachten Sie, dass Sie, wenn ein Syntaxfehler in der .cshtml-Datei vorhanden ist, das nächste Mal zu kompilieren (da die generierte .cs-Datei kompilierfehler hat), jedoch hat Visual Studio anscheinend Probleme, das Problem festzulegen.

    Manchmal kann der kompilierte Code aus dem letzten Build (aus der Datei zusammengestellt) manchmal in Konflikt mit der neu aktualisierten .cshtml-Datei inkl.

    Ich würde daher empfehlen, ein Voraufbau-Ereignis hinzuzufügen, um die Datei abzuschneiden generasacodicetagpre.

    Sie können anspruchsvoller und nur dann tun, wenn die .cshtml-Datei geändert wurde (und dies gilt auch für den oben geschriebenen Code).

Verwenden Sie den Rasierergenerator Erweiterung auf der Ansicht mit Helfern innen und Sie generieren den Code für dieAnsicht vor der Kompilierzeit.Der generierte View-Code ist Teil Ihres Projekts und kompiliert in der Baugruppe, sodass Sie die Ansichtsdatei überall aufgeben und die Helfer überall verwenden, auch von einem Gerätetest.

Sicher, Sie können sie überall in Ihrem Code oder der Projektstruktur einlegen.In der Datei, in der Sie Ihren Helfer erstellen, können Sie mithilfe von system.web.mvc einbeziehen.

dann erst dann die Helferklasse so ausdehnen: generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top