Co to jest równoważne z ASP.NET MVC 5HandleUnknownAction w ASP.NET 5
Controller.HandleUnknownAction()
w ASP.NET MVC 6/ASP.NET 5?
Co to jest równoważne z ASP.NET MVC 5HandleUnknownAction w ASP.NET 5
Controller.HandleUnknownAction()
w ASP.NET MVC 6/ASP.NET 5?
Nie ma prawdziwego odpowiednika.
Wybór Działania MVC5/WebAPI2 był trzystopniowy proces: 1. Uruchom trasy 2. Wybierz kontroler 3. Wybierz działanie
W MVC6, krok 2 nie ma. Akcje są wybierane bezpośrednio przy użyciu wartości tras - zauważysz, że również zniknęła Controller.BeginExecute
. Kontrolery są teraz "cienkie".
Możesz zasymulować to zachowanie, jeśli chcesz, korzystając z trasy bezpośrednio prowadzącej do danego działania.
Zdefiniuj akcję o nazwie HandleUnknownAction
w kontrolerze routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"});
Alternatywnym podejściem jest po prostu określić nieznaną działania jako parametr trasie:
Stosując to podejście, URL foo/bar
zadaniem będzie return the View bar.cshtml
, foo/baz
powróci baz.cshtml
itd.
Ciekawy, z jakiego scenariusza zazwyczaj korzystasz ta metoda? Widzę, że możesz odesłać odpowiedź prawdopodobnie mówiąc, że nie znaleziono akcji lub czegoś w tym rodzaju ... ale czy jest coś jeszcze, czego używasz do ... –
Dynamicznie generowane szablony. Powiedz, że mam/Templates/EmployeeDetails , co zrobię, to najpierw sprawdź, czy istnieje plik Widoki/Szablony/EmployeeDetails.cshtml. Jeśli nie, użyję GenericDetails.cshtml, który w środku użyje refleksji do zbudowania odpowiedniego html do edycji pracownika. Wolałbym raczej unikać tworzenia metody akcji + dedykowanego .cshtml dla każdego posiadanego przeze mnie typu, ponieważ 90% z nich będzie tylko mapą właściwości od 1 do 1 dla wejść html. – Mikeon