2015-05-04 27 views
6

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?

+1

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 ... –

+0

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

Odpowiedz

6

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"});

0

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.