Was ein Äquivalent von ASP.NET MVC 5HandleUnknownAction in ASP.NET 5
Controller.HandleUnknownAction()
in ASP.NET MVC 6/ASP.NET 5 ist?
Was ein Äquivalent von ASP.NET MVC 5HandleUnknownAction in ASP.NET 5
Controller.HandleUnknownAction()
in ASP.NET MVC 6/ASP.NET 5 ist?
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"});
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.
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 ... –
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