私はASP.NET MVC 5を使用してC#を使用してアプリケーションを作成しています。私は、アプリケーションの右上にグローバルメニューを追加する必要があります。 ChildActionOnly
属性でアクションを使用するように私にはother SOとアドバイスされました。パスのコントローラが見つかりませんでしたか、またはIControllerを実装していません
ここに私が行ったことがあります。
は私が私のレイアウトでClientsMenu
をレンダリングするので、
public class TasksController : BaseController
{
public ActionResult Index(int ClientId)
{
...
return View();
}
public ActionResult Show(int SurveyId)
{
...
return View();
}
}
よう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を作成した私は、次のコードを追加
@Html.Action("ClientsMenu", "Menus")
私のアプリケーションを実行すると、f私は、レイアウトのすべてのものから@Html.Action("ClientsMenu", "Menus")
を削除すると、エラー
The controller for path '/Tasks/Index' was not found or does not implement IController.
をollowingは正常に動作しますが、世界的なメニューはもちろん、表示されません。
この問題を解決するにはどうすればよいですか?ここで を更新しました
私は
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"、 "Menus")が探しているものである 'MenusContoller'を持っていません。 – Nkosi
@ Nkosiそれは動作しませんでした – Jaylen