Действие контроллера неоднозначно между действием базового класса с тем же именем. - PullRequest
6 голосов
/ 17 декабря 2009

Текущий запрос на действие «Индекс» для типа контроллера ContactController неоднозначен между следующими методами действия:

System.Web.Mvc.ActionResult Index() on type RX.Web.Controllers.ContactController
System.Web.Mvc.ActionResult Index() on type RX.Web.Controllers.CustomControllerBase2[[RX.Core.Model.Contact, RXTechJob.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 

Контроллер контактов:

        public virtual new ActionResult Index()
    {
        return base.Index();
    }

Базовый контроллер:

        public virtual ActionResult Index()
    {

        return View("Index", SelectAll());

    }

Почему это случилось? Как это исправить? Спасибо!

Ответы [ 2 ]

5 голосов
/ 17 декабря 2009

Вы создаете второй метод с именем index, который MVC не знает, как обрабатывать. см. здесь для обсуждения virtual new создания дополнительного не переопределяющего метода.

Вместо этого для вашего контроллера контактов рассмотрите что-то вроде:

public override ActionResult Index() {
        return base.Index();
}
0 голосов
/ 18 декабря 2009

Спасибо за ваш ответ.

Поскольку stackoverflow не распознал мой Gooogle OpenID, поэтому я создаю новую учетную запись и возвращаюсь снова:)

Я не могу использовать "переопределить", потому что я использую T4MVC .

Так что я исправлю это так:

базовый контроллер (заменить «открытый» на «защищенный»):

        protected virtual ActionResult Index()
    {

        return View("Index", SelectAll());

    }

контроллер контактов:

        public virtual new ActionResult Index()
    {
        return base.Index();
    }

В автоматически сгенерированном коде T4MVC его можно переопределить:

        public override System.Web.Mvc.ActionResult Index() {
        var callInfo = new T4MVC_ActionResult(Area, Name, Actions.Index);
        return callInfo;
    }

Кажется, теперь все работает нормально. :)

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