自定义RazorViewEngin不要执行重载的CreateView

本文关键字:重载 CreateView 执行 RazorViewEngin 自定义 | 更新日期: 2023-09-27 18:02:58

我试图创建一个自定义视图引擎来查找基于基于模块名称/程序集名称的特定虚拟路径的视图。我们的计划是能够安装包含它们自己的独立视图和控制器的模块。

当我的应用程序启动时,我有一个结构来加载和配置东西。在我的MVC初始化器模块我清除所有的视图引擎,然后添加我自己的自定义视图引擎。

然而,当我导航到控制器动作时,重写的CreateView永远不会执行。Findview do execute和i目前只是返回base.FindView(…,……,……)。

我当前的类继承RazorViewEngine和我设置我的新字符串的所有位置基于我的需要,并使用%1作为我的程序集名称持有人在这些字符串。在我的CreateView中,我将%1替换为控制器的程序集名称。

该作品基于http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.aspx的信息。

但正如我所说的问题是创建视图从未执行,所以它永远不会找到视图,因为视图位置包含%1而不是程序集名称。

值得一提的是,我运行的是asp.net MVC 5, c# .net 4/4.5站点。

自定义RazorViewEngin不要执行重载的CreateView

一个愚蠢的错误,比如没有覆盖FileExist方法,导致这个工作失败