【问题标题】:Custom RazorViewEngin don't execute overriden CreateView自定义 RazorViewEngin 不执行覆盖的 CreateView
【发布时间】: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


【解决方案1】:

一个愚蠢的错误,比如没有覆盖 FileExist 方法,导致它不起作用。

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多