我有一个 asp.net web api 应用程序,它也呈现一些剃须刀页面。
默认情况下,有两个默认引擎(webform\razor),我在渲染我的 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);
}
我读过网络表单引擎首先运行,然后才运行剃须刀引擎,但我不确定这是正确的。
我尝试从自定义引擎返回 null 和其他内容,但页面没有被渲染。
为什么我的 .cshtml 路径使用自定义引擎而不是 razor 引擎呈现?
如何告诉自定义引擎传递以 .cshtml 结尾的文件?