Как создать расширение для RedirectToAction? - PullRequest
1 голос
/ 02 ноября 2011

Существующая подпись RedirectToAction

RedirectToAction(string action, RouteValueDictionary routeValues);

, которую я хочу сделать.

RedirectToAction(RouteValueDictionary routeValues);

Итак, я создал следующее

public static class MvcControllerExtension
{
    public static RedirectToRouteResult RedirectToAction
        (this Controller controller, RouteValueDictionary routeValues)
    {
        return controller.RedirectToAction
                    (routeValues["Action"].ToString(), routeValues);
    }
}

Однако в IDE дляэтот код показывает Recursive Call, потому что он может видеть только себя.

Он не видит эту подпись.enter image description here

Я включил using System.Web.Mvc; в класс расширения.

Как я могу это исправить?спасибо.

Дополнительно:

Вот исходный код расширения.Обратите внимание на рекурсивный символ.

(Извините, у SO возникли проблемы с загрузкой изображений на imgur.com. Скоро повторите попытку).

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

Почему расширение?RedirectToAction - это вспомогательный метод в классе Controller, так почему бы не создать свой защищенный метод в базовом классе вашего контроллера?

public abstract class MyControllerBase : Controller
{
   protected RedirectToRouteResult RedirectToAction(RouteValueDictionary routeValues)
   {
      return RedirectToAction(routeValues["Action"].ToString(), routeValues);
   }
}
0 голосов
/ 02 ноября 2011

В каком пространстве имен находится MvcControllerExtension - оно должно находиться в том же пространстве имен или иметь импорт для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...