- 私は Web フォームが嫌いであり、変更する必要のあるビューがあまりないため、Razor に移動したビューがたくさんありますが、Web フォームにはまだ到達していないビューがいくつかあります。.ascx にもいくつかの部分ビューがあり、まだ Razor に移動していませんが、WebForms ビューと Razor ビューの両方から参照されています。
- ほとんどのビューのモバイル版もあります。ビューの非モバイル バージョンを Razor に変更した場合、モバイル バージョンも変更しました。サイトには、Cookie を設定することにより、手動でモバイル ビューまたは標準ビューに切り替えることができるボタンがあります。
Razor ビューがない場合、ビュー エンジンは次のようになります。
ViewEngines.Clear();
ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser) { NotSupportedViewName = "HttpExceptionNotImplemented.Mobile" });
ViewEngines.Engines.Add(new WebFormViewEngine());
その後、次のように変更しました
ViewEngines.Clear();
ViewEngines.Engines.Add(new MobileCapableRazorViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser));
ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser) { NotSupportedViewName = "HttpExceptionNotImplemented.Mobile" });
ViewEngines.Engines.Add(new RazorViewEngine());
ViewEngines.Engines.Add(new WebFormViewEngine());
これは通常のビューでは問題なく機能しましたが、サイト全体のモバイル ビューは完全に壊れていました。実際のモバイル デバイスからアクセスした場合でも、ボタンを使用してアクセスした場合でも、モバイル ページのいずれかにアクセスすると、ブラウザーに空白の白い画面が表示されます。デバッグは、サイトが開発マシン上の IIS サーバーに展開された後にのみ発生するため、特に有用ではありませんでした。ローカル テストは完全に正常に動作します (組み込みの ASP.NET Web サーバーをローカルで使用します)。
ビューエンジンの設定に問題があるようですが、グーグルの調査からそれが何であるかを理解できませんでした。
白い画面が発生したときに発生するエラーは
Exception Thrown:
Type: System.InvalidOperationException
Message: The view at '~/Views/User/History.Mobile.aspx' must derive from WebViewPage, or WebViewPage<TModel>.
Source: System.Web.Mvc
したがって、一般的に言えば、.aspx または .ascx モバイル ビューが読み込まれたときに問題が発生すると思います。