Czy metody kontrolera ASP.NET MVC muszą zwracać ActionResult?
Będąc nowym w ASP.NET MVC, zastanawiałem się nad metodami podpisu kontrolera. We wszystkich przykładach, które widziałem, zawsze wydają się zwracać ActionResult, nawet jeśli faktycznie zwracają instancję ViewResult lub podobną.
Oto często spotykany przykład:
<code>public ActionResult Index() { return this.View(); } </code>
W takim przypadku nie byłoby bardziej sensowne deklarowanie metody jakopublic ViewResult Index()
i uzyskać silniejsze wsparcie typu?
Eksperymentowanie wskazuje, że to działa, więc wydaje się możliwe.
Zdaję sobie sprawę, że mogą zaistnieć sytuacje, w których polimorfizm jest pożądany (np. Jeśli chcesz przekierować tylko w pewnych sytuacjach, ale pokaż widok w innych sytuacjach), ale jeśli metodazawsze zwraca widok, uważam, że ViewResult jest bardziej pożądany.
Jeśli chodzi o przyszłą kompatybilność, ActionResult oczywiście zapewnia bardziej solidną sygnaturę, ale jeśli kontroluje się całą bazę kodu, zawsze można zmienić podpis metody na bardziej ogólny typ powrotu, jeśli będzie to konieczne w przyszłości.
Czy są jakieś inne rozważania, których nie znam, czy powinienem po prostu zadeklarować moje metody kontrolera z określonymi typami zwracanymi?