解析特定标记的所有视图

时间:2009-11-26 16:16:31

标签: asp.net-mvc

我在我的网站上使用了一个homebrewn CMS。通过在视图中插入html-helper来使用其中的文本:

<%=Html.CmsEntry("About.Title")%>

CMS的条目存储在SQLServer中。我需要一种方法来扫描项目中的所有视图,看看是否所有标记都已存在于数据库中。

有办法做到这一点吗?我已经在运行时输入了一个DB,当找不到令牌时,我需要一种方法来执行此操作而不访问每个页面。也许通过反思?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是创建一个页面(控制器操作),该页面扫描查找“Html.CmsEntry”的文件并解析页面名称,然后查询数据库。

如果您可以从开发机器访问数据库,则可以在控制台应用程序中执行此操作,并将其设置为构建操作,因此无论何时编译,它都会运行。

如果不这样做,您可以尝试依靠蜘蛛(GoogleBot或其他方式)点击您的所有网页,然后触发现有的日志记录代码。

或者,您可以将所有页面名称存储为常量或枚举值。如果您使用了枚举值,则可以轻松地旋转它们(使用Enum.GetValues)并检查它们是否在数据库中。

所有这一切,如果页面存储在您的数据库中,您是否不能取消调用它们的所有静态页面,并从数据库中已有的内容动态生成所有内容?