O controlador para o caminho… não foi encontrado ou não implementa o IController
Estou escrevendo um aplicativo usando o ASP.NET MVC 5 usando c #. Eu preciso adicionar um menu global no lado superior direito do aplicativo. Fui avisadooutro SO usar ação comChildActionOnly
atributo.
Então aqui está o que eu fiz.
Eu criei um BaseController como este
public class BaseController : Controller
{
[ChildActionOnly]
public ActionResult ClientsMenu()
{
using (SomeContext db = new SomeContext())
{
return PartialView(db.Database.SqlQuery<Client>("SELECT * FROM clients").ToList());
}
}
}
Então eu herdei todos os meus controladores deBaseController
igual a
public class TasksController : BaseController
{
public ActionResult Index(int ClientId)
{
...
return View();
}
public ActionResult Show(int SurveyId)
{
...
return View();
}
}
Para renderizar oClientsMenu
no meu layout eu adicionei o seguinte código
@Html.Action("ClientsMenu", "Menus")
Agora, quando executo meu aplicativo, recebo o seguinte erro
The controller for path '/Tasks/Index' was not found or does not implement IController.
Quando eu removo@Html.Action("ClientsMenu", "Menus")
do layout, tudo funciona bem, mas o menu global não aparece, é claro.
O que posso fazer para resolver esse problema?
Atualizada Aqui está o que eu fiz após o feedback que recebi dos comentários abaixo
public class TasksController : Controller
{
[ChildActionOnly]
public ActionResult ClientsMenu()
{
using (SomeContext db = new SomeContext())
{
return PartialView(db.Database.SqlQuery<Client>("SELECT * FROM clients").ToList());
}
}
public ActionResult Index(int ClientId)
{
...
return View();
}
public ActionResult Show(int SurveyId)
{
...
return View();
}
}
mas ainda o mesmo erro