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?

questionAnswers(6)

yourAnswerToTheQuestion