0

私は次のルーティングを行っています:

routes.MapRoute("Home", "{language}-{culture}/{controller}/{action}");

そして私はこのような2つのコントローラーを持っています:

Controllers
--->en-EN
-------->HomeController
--->pt-PT
-------->HomeController

残念ながら、これは機能しておらず、次のエラーが発生します。

「'Home'という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエストを処理するルート('{language}-{culture} / {controller} / {action}')が検索する名前空間を指定していない場合に発生する可能性があります要求に一致するコントローラー。この場合は、「namespaces」パラメーターを受け取る「MapRoute」メソッドのオーバーロードを呼び出して、このルートを登録します。

'Home'のリクエストにより、次の一致するコントローラーが見つかりました。

MvcApplication2.Controllers.en_EN.HomeController
MvcApplication2.Controllers.pt_PT.HomeController"

名前空間「MvcApplication2.Controllers」をパラメーターとして追加しようとしましたが、それでも機能するかどうかはわかりませんが、それがインターネットで見つけた解決策でした。

ASP.Net MVCを使い始めたばかりなので、非常に基本的なものを見逃してしまった場合でも、申し訳ありません。

どうもありがとう。

4

2 に答える 2

0

あなたはたくさんの異なる文化を持つつもりですか?MVCエリアの使用を検討することをお勧めします。彼らはこの種のもののために作られています。

2つしかない場合は、次のようにルートをハードコーディングできます。

routes.MapRoute(
     "HomeEn", // Route name
     "en-EN/{controller}/{action}", // URL with parameters
     new { controller = "Home", action = "Index" }, // Parameter defaults
     new string[] { "MvcApplication2.Controllers.en_EN"}
);

routes.MapRoute(
     "HomePt", // Route name
     "pt-PT/{controller}/{action}", // URL with parameters
     new { controller = "Home", action = "Index" }, // Parameter defaults
     new string[] { "MvcApplication2.Controllers.pt_PT"}
);
于 2013-03-07T14:37:17.933 に答える
0

これはよくある誤解のようです。MVC ルートには、ファイルシステムとの相関関係はまったくありません。ネストされたフォルダーに好きなだけコントローラーを埋め込むことができますが、それHomeControllerは MVC だけです。

于 2013-03-07T16:50:56.217 に答える