2016-08-28 4 views
0

Ich habe einige Probleme mit der ASP-Routing-Engine, die Probleme sind selbst ziemlich selbsterklärend.ASP.NET MVC 5 Routing-Konfiguration überprüft nicht zugewiesenen Ordner?

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "GameGold", 
     url: "Products/GameGold/{controller}/{action}/{id}", 
     defaults: new { controller = "Coins", action = "Index", id = UrlParameter.Optional } 
     ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

Und wenn ich auf die URL localhost/Produkte/GameGold/Coins/das ist, was erscheint.

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Coins/Index.aspx 
~/Views/Coins/Index.ascx 
~/Views/Shared/Index.aspx 
~/Views/Shared/Index.ascx 
~/Views/Coins/Index.cshtml 
~/Views/Coins/Index.vbhtml 
~/Views/Shared/Index.cshtml 
~/Views/Shared/Index.vbhtml 

Ich habe meine Ordner wie diese

/Views/Products/GameGold/Coins/Index.cshtml

+1

Bitte beachten Sie, dass der Model-View-Controller-Tag für Fragen über das Muster. Es gibt ein bestimmtes Tag für die ASP.NET-MVC-Implementierung. –

Antwort

4

angelegt Der Fehler, der Ihre „Index“ -Ansicht nicht gefunden worden war, nicht verursacht wurde durch die Routing-Definition.

Die URL localhost/Products/GameGold/Coins/ wurde von der'GameGold'-Route an die CoinsController und ihre Index Aktion gemappt.

Die eingebaute Konvention für MVC ist, die Ansicht im Ordner ~/Views/[CONTROLLERNAME] nachzuschlagen - so sah es innerhalb des Ordners ~/Views/Coins/ aus.

Um dies zu beheben, haben Sie zwei Möglichkeiten:

1.) Halten Sie sich an die Konvention und bewegen die /Views/Products/GameGold/Coins/Index.cshtml zu /Views/Coins/Index.cshtml

2.) Ändern Sie den ViewLocationFormats des Razor-Engine Ihre Verzeichnisstruktur zu empfangen. Einzelheiten hierzu können Sie in Blogs Beiträgen wie http://www.ryadel.com/en/asp-net-mvc-add-custom-locations-to-the-view-engine-default-search-patterns/ Ein Beispiel aus diesem Beitrag finden:

// Add /MyVeryOwn/ folder to the default location scheme for STANDARD Views 
var razorEngine = ViewEngines.Engines.OfType<RazorViewEngine>().FirstOrDefault(); 
razorEngine.ViewLocationFormats = 
    razorEngine.ViewLocationFormats.Concat(new string[] { 
     "~/Views/Products/GameGold/{1}/{0}.cshtml", 
     "~/Views/Products/GameGold/{0}.cshtml" 
     // add other folders here (if any) 
    }).ToArray();