【发布时间】:2014-05-13 09:08:34
【问题描述】:
我正在尝试创建一个自定义视图引擎,以根据基于模块名称/程序集名称的特定虚拟路径查找视图。计划是能够安装包含自己独立视图和控制器的模块。
当我的应用程序启动时,我有一个结构来加载和配置东西。在我的 MVC Initializer 模块中,我清除所有视图引擎,然后添加我自己的自定义视图引擎。
但是,当我导航到控制器操作时,被覆盖的 CreateView 永远不会执行。 Findview 执行,我目前只返回 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 站点。
【问题讨论】:
-
您是否重写了
FileExists方法?您需要像文章中那样覆盖它,在调用基本实现之前替换 %1 -
看起来这是我的错误,没有覆盖 FileExist 方法。这已经让我发疯了好几天了。谢谢
标签: c# asp.net asp.net-mvc razor asp.net-mvc-5