1. ホーム
  2. c#

[解決済み] パスのコントローラが見つからないか、IController を実装していません。

2023-08-11 06:20:29

質問

MVC4プロジェクトで、言語選択をしています。

  • en
  • nl
  • fr
  • de

1のメインパーツを持つ。

  • について
  • 共通(メニュー用)
  • 連絡先
  • よくある質問
  • ホーム

と3つのエリア。

  • 管理者
  • 顧客
  • ショップ

各エリアには少なくとも1つのコントローラがあり、例えばAdminでは、コントローラ 概要 というコントローラがあり、対応するビューフォルダ 概要 があり、その中には index.aspx ページが含まれています。

トップページとすべての主要ページ(about、faqなど)が機能し、訪問することができる)。

しかし、私は url: localhost:xxxx/ja/admin/overview をたどったとき というエラーが表示されます。

パス '/en/admin/overview' のコントローラが見つからないか、IController を実装していません。

ルートが正しいにもかかわらず (Route Debugger で確認できます)、エラーページには、メインメニュー項目を読み込もうとしたときにエラーが発生したことも示されています。

<nav id="site-navigation" class="eightcol">
    @Html.Action("MenuItems", "Common")
</nav>

-- 無関係なのでコードを削除しました。

すべてが整っているように見えますが、MVCはメイン部分にあるメニューを読み込むことができないようです。

つまり、問題の根源は プロジェクトのメイン部分 (home、common、about など) のコントローラーへのアクセスを、ある領域 (たとえば Admin) に許可することは可能でしょうか?

どのように解決するのですか?

見つかりました。

ある領域の中にあるページが、その領域の外にあるコントローラ(共有レイアウトページや別の領域内の特定のページなど)にアクセスしたい場合、そのコントローラの領域を追加する必要があります。 共通コントローラは特定の領域にあるのではなく、メインプロジェクトの一部なので、領域は空のままにしておく必要があります。

@Html.Action("MenuItems", "Common", new {area="" }) 

レイアウトページは様々な領域で共有されているため、上記はすべてのアクションとアクションリンクに追加する必要があります。

ここと全く同じ問題です。 レイアウトを共有するASP.NET MVCエリア

編集 : はっきり言って、これは私の問題に対する答えであったので、答えとしてマークされています。上記の回答は、同じエラーを誘発する原因を解決するかもしれません。