Kann ich einen benutzerdefinierten Speicherort angeben, um in ASP.NET MVC nach Ansichten zu suchen?
Habe ich das folgende layout für mein mvc Projekt:
- /Controller
- /Demo
- /Demo/DemoArea1Controller
- /Demo/DemoArea2Controller
- etc...
- /Ansichten
- /Demo
- /Demo/DemoArea1/Index.aspx
- /Demo/DemoArea2/Index.aspx
Allerdings, wenn ich dieses für DemoArea1Controller
:
public class DemoArea1Controller : Controller
{
public ActionResult Index()
{
return View();
}
}
Bekomme ich die "view 'index' oder seiner Meister konnte nicht gefunden werden" Fehlermeldung, mit der üblichen Suche nach Standorten.
Wie kann ich festlegen, dass der Controller in der "Demo" - namespace-Suche in der "Demo" - Sicht Unterordner?
InformationsquelleAutor der Frage Daniel Schaffer | 2009-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ganz einfach verlängern die WebFormViewEngine angeben, alle die Orte, die Sie wollen, zu schauen in:
Stellen Sie sicher, dass Sie erinnern zu registrieren anzeigen-Motor durch ändern der Application_Start-Methode in der Global.asax.cs
InformationsquelleAutor der Antwort Sam Wessel
Gibt es eigentlich eine viel einfachere Methode als hartzucodieren die Pfade in den Konstruktor. Unten ist ein Beispiel der Erweiterung der Razor-engine neue Wege. Eine Sache, die ich bin mir nicht ganz sicher, ob die Pfade, die Sie hier hinzufügen können, werden zwischengespeichert werden:
Und Ihre Globalen.asax.cs
Eine Sache zu beachten: Ihre benutzerdefinierten Speicherort müssen die ViewStart.cshtml-Datei in der Wurzel.
InformationsquelleAutor der Antwort Chris S
Nun in MVC 6, die Sie umsetzen können
IViewLocationExpander
Schnittstelle ohne Herumspielen mit Blick auf die Motoren:wo
{0}
ist Ziel-view-name,{1}
- controller-Namen und{2}
- Bereich name.Zurück können Sie Ihre eigene Liste von Orten, Seriendruck mit Standard -
viewLocations
(.Union(viewLocations)
) oder einfach nur ändern Sie Sie (viewLocations.Select(path => "/AnotherPath" + path)
).Registrieren Sie Ihre benutzerdefinierte Ansicht Lage expander in MVC, fügen Sie die nächsten Zeilen zu
ConfigureServices
Methode inStartup.cs
Datei:InformationsquelleAutor der Antwort whyleee
Wenn Sie möchten, fügen Sie einfach neue Wege, die Sie hinzufügen können, um die Standard-anzeigen, Motoren und Ersatzteile, ein paar Zeilen code:
Gleiches gilt für
WebFormEngine
InformationsquelleAutor der Antwort Marcelo De Zen
Anstelle von Unterklassen der RazorViewEngine, oder ersetzen Sie es geradezu, Sie können nur änderung der bestehenden RazorViewEngine ist PartialViewLocationFormats Eigenschaft. Dieser code geht in Application_Start:
InformationsquelleAutor der Antwort Simon Giles
Zuletzt habe ich geprüft, dies erfordert, dass Sie bauen Ihre eigene ViewEngine. Ich weiß nicht, ob Sie es leichter gemacht, in der RC1 aber.
Den grundlegenden Ansatz, den ich verwendet, bevor der erste RC war, in meine eigene ViewEngine split der Namensraum der controller und suchen Sie nach Ordnern, die aufeinander abgestimmt die Teile.
EDIT:
Ging zurück und fand den code. Hier ist die Allgemeine Idee.
InformationsquelleAutor der Antwort Joel
Probieren Sie etwas wie dieses:
InformationsquelleAutor der Antwort Vitaliy Ulantikov
Hinweis: für ASP.NET MVC 2 Sie haben zusätzliche Lage Pfade, die Sie benötigen, um für Ansichten, die in 'Bereiche'.
Erstellen einer view engine für ein Gebiet ist beschrieben auf Phil ' s blog.
Hinweis: Dies ist für preview-Version 1, also ist FREIBLEIBEND.
InformationsquelleAutor der Antwort Simon_Weaver