Czy istnieje "globalne" narzędzie OnActionExecuting, które można przesłonić, aby wykonać wszystkie akcje MVC (niezależnie od kontrolera), gdy zostaną one wywołane? Jeśli tak to jak?ASP.NET MVC: Wykonaj kod we wszystkich działaniach (globalne wykonanie OnActionExecuting?)
Odpowiedz
Nie. Najłatwiejszym sposobem jest napisanie wspólnej klasy bazowej, która obejmuje wszystkie podklasy typów kontrolerów, a następnie przyklejenie filtru akcji do tej klasy bazowej lub zastąpienie jej metodą OnActionExecuting().
... oczywiście wszystko zależy od tego, co trzeba zrobić. –
Należy pamiętać, że MVC 3 dodał obsługę globalnych filtrów –
Asp.net MVC3 dodano wsparcie dla Global Filters
z bloga ScottGu:
ASP.NET MVC wspiera zdolność deklaratywnie Zastosuj „przekrojowy” logiki za pomocą mechanizmu o nazwie „Filtry”. Można określić filtry na kontrolerach i metody działania dziś użyciem składni atrybutu tak:
Deweloperzy często chcesz zastosować jakąś logikę filtra we wszystkich kontrolerów w aplikacji. ASP.NET MVC 3 umożliwia teraz określenie, że filtr powinien obowiązywać globalnie dla wszystkich kontrolerów w aplikacji. Możesz teraz to zrobić, dodając go do kolekcji GlobalFilters
. RegisterGlobalFilters()
metoda jest obecnie zawarte w szablonie domyślnym klasy Global.asax aby zapewnić wygodne miejsce, aby to zrobić (to jest wtedy nazywana metodą Application_Start()
):
Uchwała logika filtr w MVC 3 elastyczny, aby można było skonfigurować filtr globalny, który jest stosowany warunkowo tylko wtedy, gdy spełnione są określone warunki (na przykład: debugowanie jest włączone lub jeśli żądanie używa określonego czasownika http itp.). Filtry można również teraz rozwiązać za pomocą kontenera Dependency Injection (DI).
Tworzenie jedna klasa, która implementuje IActionFilter i/lub IResultFilter:
public class FilterAllActions : IActionFilter, IResultFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
throw new System.NotImplementedException();
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
throw new System.NotImplementedException();
}
public void OnResultExecuting(ResultExecutingContext filterContext)
{
throw new System.NotImplementedException();
}
public void OnResultExecuted(ResultExecutedContext filterContext)
{
throw new System.NotImplementedException();
}
}
i zarejestrować go na Global.asax
protected void Application_Start()
{
//...
RegisterGlobalFilters(GlobalFilters.Filters);
//...
}
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new FilterAllActions());
}
- 1. Szyny Zmienna we wszystkich działaniach kontrolera
- 2. Deklarowanie zmiennej globalnej do użycia we wszystkich działaniach
- 3. Wykonaj operację asynchroniczną asp.net mvc poza operacją
- 4. Asp.Net Mvc 4 Kod źródłowy?
- 5. W jaki sposób mogę przetestować metodę OnActionExecuting kontrolera asp.net-mvc?
- 6. Ustawienie globalne środowiska ASP.NET MVC 2.0 JsonRequestBehavior
- 7. Znajdź typy we wszystkich złożeniach
- 8. Zmienne globalne spowolnienie kod
- 9. Wykonaj kod jQuery po zastosowaniu wszystkich reguł CSS
- 10. Wykonaj kod przed/po każdym działaniu kontrolera
- 11. Wykonanie JavaScript w częściowym widoku w ASP.NET MVC
- 12. Rejestruj globalne filtry w ASP.NET MVC 4 i Autofac
- 13. Wywołanie OnActionExecuting FilterAttribute przed BaseController za OnActionExecuting
- 14. Kod X Znajdź i zamień we wszystkich plikach projektu
- 15. grep we wszystkich katalogach
- 16. Jak dodać globalne filtry ASP.Net Web Api?
- 17. Python: Czytanie wszystkich plików we wszystkich katalogach
- 18. Kod udostępniania między kontrolerami ASP.NET MVC
- 19. ASP.NET MVC 4 Kod pocztowy Validation
- 20. Reading atrybut w OnAction Wykonanie w asp.net mvc3
- 21. Wykonaj kod, gdy debuger VisualStudio kończy pracę:
- 22. Obsługa wyjątków ASP.NET MVC
- 23. Wykonaj kod po zamknięciu WPF
- 24. MVC 5 Konto globalne Konto użytkownika Obiekt
- 25. Kontroler MVC. Wykonaj z obszarami
- 26. Wysublimowany tekst 2 - znajdowanie i zastępowanie globalne (wszystkie pliki i we wszystkich katalogach)
- 27. Buforowanie w asp.net-mvc
- 28. Warunkowo wyłączyć kontroler ASP.NET MVC
- 29. zawierają nazwę klasy we wszystkich obiektach serializowanych przez jackson
- 30. Ukrywanie paska adresu we wszystkich przeglądarkach
Co kontekst, co chcesz zrobić to w? – cdmckay
Bieżący kontekst. – Alex