Q&A – Czy można przeładować metody Action w ASP.NET MVC, jak?

Otóż na pytanie czy można przeładować metody Action w ASP.NET MVC – tak, można. A teraz powiemy sobie jak. Pierwsze co zgodnie z tym co zwykliśmy robić przychodzi nam zapewne do głowy to coś takiego:



Mianowicie mamy tutaj dwie metody o różnych sygnaturach. Zdawałoby się, że jest w porządku. Jednak próba odwołania się do tego kontrolera zaowocuje następującym błędem:

Overload error


Aplikacja nie jest w stanie rozróżnić, którą metodę wywołać.

Z pomocą przychodzi nam tutaj atrybut pozwalający określić “ActionName”. Zobaczmy jak wówczas wyglądałby kod:

Wówczas odwołanie do pierwszej metody wyglądałoby następująco i dawałoby następujący rezultat:

Overload result


Natomiast do drugiej:

Overload result

Możemy zauważyć iż w pierwszym przypadku ścieżka się nie zmieniła. Natomiast w drugim mamy w URL dodatkowy parametr – jest nim właśnie ActionName, który pozwala aplikacji rozróżnić, którą metodę wywołać.