Ich versuche Razor View aus der Datenbank zu laden.
Ich folge ASP.NET MVC und virtuellen Ansichten und VirtualPathProvider in MVC 5 , um das zu tun.
mein Code:
VirtualPathProvider:
%Vor%VirtualFile
%Vor%Global.asax:
%Vor%Aktion:
%Vor%Daten:
Fall 1:
Wenn der Wert von virtualPath "/ Views / Home / Contact.cshtml" lautet, gibt die FileExists-Methode true zurück und die Methode GetFile heißt .
Fall 2:
Wenn der virtualPath-Wert "~ / Home / Display / ce28bbb6-03cb-4bf4-8820-373890396a90" ist, gibt die FileExists-Methode true und GetFile-Methode und zurück Anzeige Aktion wird nie aufgerufen. und das Ergebnis ist
HTTP-Fehler 404.0 - Nicht gefunden Die Ressource, nach der Sie suchen, wurde entfernt, der Name wurde geändert oder ist vorübergehend nicht verfügbar.
Ich habe keine Ahnung von dynamischer Sicht. Ich lese gerade diesen zwei Artikel und versuche ihn zu implementieren.
Bitte sagen Sie mir, wo ich falsch liege.
Ich verwende MVC 5 und .NET 4.5
etwas, bei dem ich Ihnen helfen könnte. Es gibt etwas, worüber du nicht nachdenkst, was in Ordnung ist, denn ich hatte auch eine Menge Probleme damit.
Ich denke, das Problem, das Sie hier haben, ist zu wissen, in welcher Reihenfolge alles feuert. Das passiert:
Zuerst wird die Methode VirtualPathProvider FileExists aufgerufen und Hier machen Sie Ihre Magie, um die Seite zu finden. Meine Methoden unterscheiden sich geringfügig von Ihren, hier ein Beispiel:
%Vor%Nun, wenn diese Seite von der Datenbank bedient wird, ist es eine virtuelle Seite. Das nächste, was passiert, ist, dass sie Ihren MvcHandler aufruft (in meinem Handler habe ich diese Funktionen)
%Vor%Nur für den Fall, dass Sie Ihren MvcHandler erstellen, falls Sie dies noch nicht getan haben, muss er in RouteConfig wie folgt registriert werden:
%Vor%In meinem MvcHandler erhalte ich meine Seite. Wenn sie mit einer virtuellen Seite übereinstimmt, gehe ich zu einem RoutingController
%Vor%nur für dich, ich werde die service.View Methode
zeigen %Vor%Ich hoffe wirklich, dass das hilft:)
WARNUNG: ASP.NET 4 (MVC5) relativ!
Trotz der Anzahl der Antworten und einer ausgewählten, werde ich meine Erfahrung teilen.
%Vor% wird zweimal aufgerufen, einmal mit einem app-relativen Pfad ("~ / bla-bla") und noch einmal mit absolutem ("/ bla-bla"). In meinem Fall versagt der zweite (der abs. Pfad). Scheint wie in ASP.NET 3 war das OK, aber ASP.NET 4 (MVC5) überprüft es auch. Und erfordert, dass true
zurückgegeben wird. Als Ergebnis
wird nicht aufgerufen.
Für diejenigen, die ein solches Verhalten implementieren müssen, bietet VirtualPathUtility
die Methoden ToAbsolute
und ToAppRelative
comfort an.
HTH
Tags und Links asp.net-mvc c# razor asp.net