我正在使用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