2017-03-01 2 views
0

Ich habe meinen Controller so konfiguriert, dass er eine Ansicht von einem benutzerdefinierten Speicherort anstelle des typischen Views-Ordners zurückgibt. Dies wurde durch Hinzufügen des folgenden Code erreicht Global.asaxasp mvc benutzerdefinierter Standort

var razorEngine = ViewEngines.Engines.OfType<RazorViewEngine>().First(); 
     razorEngine.ViewLocationFormats = razorEngine.ViewLocationFormats.Concat(new string[] 
     { 
      "~/UI/app/{1}/Views/{0}.cshtml" 
     }).ToArray(); 

Es funktioniert gut, aber ich bin vor Probleme mit der Verknüpfung von CSS, Bilder und js Dateien auf die cshtml Seite. Beim Laden der Seite scheint 404 nicht gefunden zu sein und auf der Konsole bekomme ich "Fehler beim Laden der Ressource: Der Server hat mit dem Status 404 (Not Found) geantwortet".

Nicht sicher, ob ich etwas vermisse oder warum es den Pfad zu meinen Inhaltsdateien nicht finden kann. Die Art, wie ich die Inhaltsdateien referenzierte, war wie folgt: ~/Pfad zum Speicherort

+0

CSS und JS-Dateien verwenden die Bündelung und Optimierung Mechanismus - überprüfen Sie die Layout-Ansicht, die 'Styles/Scripts' Rendering enthält. Fügen Sie 'Application_Start' Methode &' BundleConfig' Code ein, um das genaue Problem zu klären. –

+0

Wie lautet der tatsächliche Pfad zu Ihren Inhaltsdateien? – garethb

+0

@garethb Pfad zum Inhalt ist ~/UI/app/Home/JS und die Ansicht lebt nur auf Startseite/Ansichten –

Antwort

0

Das Problem wurde behoben, indem web config zum benutzerdefinierten Verzeichnis hinzugefügt wurde und sichergestellt wurde, dass der BlockViewHandler-Pfad auf "* .cshtml" gesetzt war. z.B. Von

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 

Um

<add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 

Hoffe, dass es anderen hilft :)