私は、複数のMVCプロジェクトで動作するフレームワークを作成しようとしています。それぞれのプロジェクトをエリアとして追加したいと思います。 私はこのように私のコード領域をシミュレートしてみて、各プロジェクトでAreaRegistration
を使用することはできません。Mvc、AreaRegistrationを使わずにオンザフライで登録する
foreach (var module in InstalledModules)
{
routeCollection.MapRoute(
name: "Default_" + module.AreaName,
url: module.AreaName + "/{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { module.Namespace }
);
}
InstalledModules
をModule1
とMvcProject.Module1
などのモジュールアセンブリのルート名前空間のような地域名を含むすべてのモジュールのリストです。上記のコードMapRoute
はすべてインストールされたモジュールですが、動作しません。すべてのリクエストに対して、最初に登録された経路ヒットとMVCが間違ったアセンブリ(場所)でコントローラを検索しようとしました。
オンザフライでエリアとしてプロジェクトアセンブリを登録する方法はありますか?私は検索に一致するルートの方法をカスタマイズするにはどうすればよい
それとも
?
はい、動作しません。 – Fred
上記のコードで試したところ、/ Main/Home、/ Web1/Home、/ Web2/Homeに正常にルーティングされました。 問題はコントローラが/ Mainのビューを常にロードすることです(MainWebはスタートアッププロジェクトです)。 私はWeb1/Views、Web2/ViewsからMainWeb/Viewsにビューを移動します。 – Ken2009
はい、そうです。私は自分の問題を見つけました。ルートコレクションには常にデフォルトルートが含まれます。私はこれをすべて削除すると、この作業はうまく動作します。ご回答有難うございます – Fred