かみそりのページもレンダリングするasp.net Web APIアプリケーションがあります。
デフォルトでは、2 つのデフォルト エンジン (webform\razor) があり、剃刀ページのレンダリングに問題はありませんでした。
ここで、カスタム エンジンを使用してレンダリングされる古い aspx\ascx ページをサポートする必要があります。
したがって、アプリケーションをブートストラップするときは、次のようにします。
// Remove the default web form engine
ViewEngines.Engines.Remove(ViewEngines.Engines.OfType<WebFormViewEngine>().FirstOrDefault());
// Add my custom engine
ViewEngines.Engines.Add(ApplicationContainer.Resolve<CustomViewEngine>());
私のカスタム ビュー エンジンのプロトタイプは次のとおりです。
public class CustomViewEngine: VirtualPathProviderViewEngine
さて、私の問題は古いかみそりのページにあります.何らかの理由で(かみそりビューエンジンではなく)このエンジンでレンダリングされ、「FindView」機能の実行中に例外が発生します.
かみそりのページを特別な方法でレンダリングしましたが、最終的には次のようになります。
public ActionResult MyAction()
{
return View('Razor/abcd.cshtml',model);
}
Web フォーム エンジンが最初に実行され、その後かみそりエンジンが実行されると読んだことがありますが、それが正しいかどうかはわかりません。
カスタム エンジンから null などを返そうとしましたが、ページがレンダリングされません。
.cshtml パスがカミソリ エンジンではなくカスタム エンジンでレンダリングされるのはなぜですか?
.cshtml で終わるファイルを渡すようにカスタム エンジンに指示するにはどうすればよいですか?