私たちのサイトのアドレスがwww.my-awesome-site.comであり、 www.my-awesome-site.com / mvc-stuffでMVCを利用できるようにしたいとしましょう。
前提条件:ASP.NET Webアプリケーション(WebFormsApplication)とASP.NET MVCプロジェクト(MvcApplication)の2つのプロジェクトを備えたソリューションがあります。
なすべきこと。
1. WebFormsApplication用のASP.NET MVCをインストールします
2. MvcApplicationのWebFormsApplicationへのリンクを追加します
3. Application_Startと同様のパブリックメソッドをMvcApplicationに追加します
4. WebFormsApplicationアプリケーションのApplication_Startでこのメソッドを呼び出します
5. Razor Generatorを使用して、MvcApplicationアセンブリにビューを含めます
4. ...
5.利益!!!
1. WebFormsApplication用のASP.NET MVCをインストールします。次のコマンドを使用して、nugetで実行します。Get-ProjectWebFormsApplication | インストールパッケージAspNetMvc
2. WebFormsApplicationのリンクをMvcApplicationに追加します。 それは簡単です-参照を追加...その後、あなたは知っています
3. Application_Startと同様のパブリックメソッドをMvcApplicationに追加します
Global.asax MvcApplicationコード
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { Start(); } public static void Start(string prefix = null) { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); // let's register routs with prefix RouteConfig.RegisterRoutes(RouteTable.Routes, prefix); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); } }
ここには「プレフィックス」などのパラメーターがあり、ルーティングに必要です。 したがって、RouteConfigクラスのRegisterRoutesメソッドを変更して、このパラメーターを受け入れられるようにします。
RouteConfig MvcApplicationコード
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes, string prefix) { if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith("/")) { prefix += "/"; } routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: prefix + "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
4. WebFormsApplicationアプリケーションのApplication_Startでこのメソッドへの呼び出しを追加します
Application_Start Global.asax WebFormsApplicationコード
void Application_Start(object sender, EventArgs e) { // Code that runs on application startup BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterOpenAuth(); // Here we add MVC app MvcApplication.MvcApplication.Start("mvc-stuff"); }
5. Visual Studioのプラグインをインストールします
これを行うには、拡張機能と更新プログラムを使用してRazor Generatorをインストールします(MVC用のRazor Single File Generatorと混同しないでください)。
6. Razor Generatorを使用して、MvcApplicationアセンブリでビューを有効にします
MvcApplicationプロジェクトのRazor Generatorをインストールします。これは、次のGet-Project MvcApplicationを使用して、nugetで実行します。 インストールパッケージRazorGenerator.Mvc
目的のビューに対して、ビルドアクション:なし、カスタムツール:RazorGeneratorのプロパティを設定します。 その後、viewName.generated.csというファイルがView用に生成されます
以上です。 これで、プロジェクトをビルドして、何が起こったのかを確認できます。
ここにいくつかの関連リンクがあります
かみそり発生器
RazorGeneratorを使用してMVC Razorビューをプリコンパイルします
ASP.NET MVC-WebFormsでの使用方法
ASP.NET MVC-アプリケーションの一部を別のアセンブリに組み込む方法
HarmonyのASP.NET WebFormsおよびASP.NET MVC
MVCをWebフォームプロジェクトに追加する