2015-05-04 16 views
6

Was ein Äquivalent von ASP.NET MVC 5HandleUnknownAction in ASP.NET 5

Controller.HandleUnknownAction() 

in ASP.NET MVC 6/ASP.NET 5 ist?

+1

gespannt, was Szenario haben im allgemeinen Sie verwenden diese Methode für? Ich sehe, dass Sie eine Antwort zurücksenden können, die wahrscheinlich sagt, dass eine Aktion nicht gefunden wurde oder etwas von dieser Art ... aber gibt es noch etwas, wofür Sie es verwenden ... –

+0

Dynamisch generierte Vorlagen. Angenommen, ich habe/Templates/EmployeeDetails , was ich tun werde, ist zuerst zu prüfen, ob es eine Datei Views/Templates/EmployeeDetails.cshtml gibt. Wenn nicht, werde ich GenericDetails.cshtml verwenden, welches innerhalb der Reflektion verwendet wird, um ein korrektes HTML zu erstellen, um den Angestellten zu bearbeiten. Würde eher die Notwendigkeit vermeiden, Aktionsmethode + dedizierten .cshtml für jeden Typ, den ich als 90% von ihnen haben wird nur 1-zu-1-Karte von Eigenschaften zu HTML-Eingaben zu erstellen. – Mikeon

Antwort

6

Es gibt kein echtes Äquivalent.

Aktion Auswahl in MVC5/WebAPI2 war ein dreistufiger Prozess: 1. Führen Sie die Routen 2. einen Controller auswählen 3. Wählen Sie eine Aktion

In MVC6, Stufe 2 ist weg. Aktionen werden direkt mit Routenwerten ausgewählt - Sie werden feststellen, dass Controller.BeginExecute ebenfalls nicht mehr vorhanden ist. Controller sind jetzt "dünn".

Sie können dieses Verhalten simulieren, indem Sie eine Route verwenden, die direkt zu Ihrer betreffenden Aktion führt.

eine Aktion definieren HandleUnknownAction in Ihrem Controller namens routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"});

0

Ein alternativer Ansatz ist die unbekannte Aktion als Parameter Ihrer Route einfach zu definieren:

Mit diesem Ansatz, die URL foo/bar würde Rückkehr der Ansicht bar.cshtml, foo/baz zurückkehren würde baz.cshtml usw.