我正在使用c#编写使用ASP.NET MVC 5的应用程序。我需要在应用程序的右上角添加全局菜单。我被告知other SO使用ChildActionOnly
属性的操作。路径控制器...未找到或未实现IController
所以这就是我所做的。
我创建了一个BaseController这样
public class BaseController : Controller
{
[ChildActionOnly]
public ActionResult ClientsMenu()
{
using (SomeContext db = new SomeContext())
{
return PartialView(db.Database.SqlQuery<Client>("SELECT * FROM clients").ToList());
}
}
}
于是我继承了我的所有控制器从BaseController
像这样
public class TasksController : BaseController
{
public ActionResult Index(int ClientId)
{
...
return View();
}
public ActionResult Show(int SurveyId)
{
...
return View();
}
}
要呈现在我的布局ClientsMenu
添加以下代码
@Html.Action("ClientsMenu", "Menus")
现在,当我运行我的应用程序时,我得到了f ollowing错误
The controller for path '/Tasks/Index' was not found or does not implement IController.
当我从布局删除一切工作@Html.Action("ClientsMenu", "Menus")
不错,但全局菜单不显示,当然。
我能做些什么来解决这个问题?
更新 这里是我的反馈我从评论得到了下面
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();
}
}
,但仍是同样的错误后进行
你能发布你的RouteConfig.cs吗? –
将'CleintMenus'动作从基础控制器中取出并放入其自己的控制器中。就像你连接的例子一样。根据你展示的内容。你没有'@ Html.Action(“ClientsMenu”,“菜单”)正在寻找的'MenusContoller'。 – Nkosi
@Nkosi那没有用 – Jaylen