Наследование от контроллера в Asp.NET MVC 5

Я создал универсальный класс контроллера

namespace OxygenFramework.MvcController
{
  public class MvcController<TEntity> : Controller
    where TEntity : class
  {
    public void UpdateModelState(TEntity t)
    {
        ...
    }
  }
}

затем я использовал его, как показано ниже

namespace LeitnerMVC.Controllers
  {
    public class HomeController : MvcController<Account>
     {
    //
    // GET: /Home/
    public ActionResult Index()
    {
        UpdateModelState(t);
        return View();
    }
  }
}

НО при запуске страницы приложения mvc отображается эта ошибка

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies)     could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

после поиска в Интернете я нашел способ решить эту проблему

  void Application_Start(object sender, EventArgs e)
    {                 
    ControllerBuilder.Current.DefaultNamespaces.Add("OxygenFramework.MvcController");
    }

Но приведенное выше решение не работает для меня !!! и снова показывает ошибку Http 404

При использовании Controller вместо MvcController страница отображается без проблем!!!

Может кто-нибудь помочь мне ?

Обновление:

после многих исследований я понимаю, почему возникает эта проблема, но все же не знаю, как ее решить. КОГДА я перемещаю исходный код MvcController из моей сборки фреймворка (OxygenFramework.MvcController) и перемещаю его в проект MVC, MvcController работает, но когда я ссылаюсь на MvcController из сборки OxygenFramework, MVC показывает ошибку 404 !!! Теперь я знаю, что эта проблема возникает из-за того, что MvcController находится в другой сборке, но я не знаю, как решить эту проблему.

Внимание: только общая реализация MvcController находится в сборке OxygenFramework, а все контроллеры находятся в папке Controllers по умолчанию.


person R R    schedule 09.11.2013    source источник
comment
1. какая страница (url) показывает вам 404? 2. Какой веб-движок вы используете? 3. Находится ли HomeController в папке Controllers?   -  person AgentFire    schedule 09.11.2013
comment
1. localhost/Home/Index 2. MVC (Razor) 3. Да   -  person R R    schedule 09.11.2013
comment
Добавьте LeitnerMVC.Controllers в пространства имен по умолчанию.   -  person AgentFire    schedule 09.11.2013
comment
Я добавил, но не работает!!! :(   -  person R R    schedule 09.11.2013
comment
Что насчет расположения файлов? (контролеры и учетные записи)   -  person Agat    schedule 09.11.2013
comment
Все контроллеры в папке «Контроллеры по умолчанию» — учетная запись — это мой DTO в отдельной сборке   -  person R R    schedule 09.11.2013
comment
При использовании контроллера вместо MvcController страница отображается без проблем, просто для уточнения... Это означает, что если вы наследуете HomeController от контроллера - это нормально, но когда от MvcController - нет? (Как правило, у меня все работает никак).   -  person Agat    schedule 09.11.2013
comment
(Я бы также сделал класс MvcController «абстрактным»).   -  person Agat    schedule 09.11.2013
comment
не работает :( Я добавил абстракцию, но не сработало, да, когда я наследую от контроллера, работает, но с MvcController не работает! Я не знаю, почему ?!!!!!!!!   -  person R R    schedule 09.11.2013
comment
О, что касается абстрактного — это была просто общая мысль. (не относится к этой самой проблеме). Что касается проблемы - вам нужно предоставить либо проект (ы) все вместе (по крайней мере, основные моменты), либо больше кода, так как в основном это работает для меня (и должно работать концептуально). Так что, если вы хотите, вы можете войти в чат и предоставить ссылку на проект и т. д.   -  person Agat    schedule 09.11.2013
comment
@Agat спасибо за вашу помощь, я обновил свой пост, обратите внимание, да, код работает в Mvc Solution, но когда я ссылался на MvcController из моей сборки фреймворка, он не работает и показывает ошибку 404. У вас есть идеи?   -  person R R    schedule 10.11.2013
comment
Вы уверены, что эта отдельная сборка включена в выходную папку основного проекта?   -  person Agat    schedule 10.11.2013
comment
* (Я имел в виду папку «bin», конечно).   -  person Agat    schedule 10.11.2013
comment
У меня есть сборка в качестве моей библиотеки (фреймворка), имя сборки - OxygenFramework, поэтому в этой сборке я создал несколько классов для некоторых проблем, таких как проверка, шаблон репозитория,... и общая реализация MvcController (выше кода), затем я создал Mvc Приложение и добавить ссылочную сборку OxygenFramework и унаследованную от нее, когда я наследую от этой ссылочной сборки, mvc показывает ошибку 404, но когда я перемещаю исходный код в простой класс в MvcApplication, отображается правильно   -  person R R    schedule 10.11.2013
comment
да. У меня есть то, как вы используете это в разработке (поскольку вы не сможете наследовать от родительского класса), но я не могу найти причину проблемы - для меня базовая реализация ситуации работает хорошо. Итак, я могу только предложить вам предоставить «облегченную» версию вашего кода для более пристального изучения мной.   -  person Agat    schedule 10.11.2013
comment
@Agat Дорогой Агат, я нашел проблему и решил ее!!! Я использовал System.Web.Mvc.dll версии 4.0 в своей структуре, но использовал System.Web.Mvc.dll 5.0 в своем MvcApplication! :D   -  person R R    schedule 10.11.2013
comment
Ага. Странно, что вы даже смогли скомпилировать проект (если вы действительно смогли это сделать), поэтому я подумал, что вы уже сделали все эти исправления.   -  person Agat    schedule 10.11.2013
comment
В любом случае, вы должны написать ответ на свой вопрос в любом случае, если вы решили проблему.   -  person Agat    schedule 10.11.2013


Ответы (1)


После долгих исследований я обнаружил проблему, которую хочу сказать @Agat, спасибо :)

Но решение: я использовал System.Web.Mvc.dll версии 4.0 в своей структуре, но использовал System.Web.Mvc.dll 5.0 в своем MvcApplication! Это вмешательство вызывает ошибку 404 из-за наследования: D

person R R    schedule 10.11.2013