解析特定标记的所有视图

问题描述:

我在我的网站中使用了一个自制CMS。通过将html-helper插入到视图中来使用它中的文本:解析特定标记的所有视图

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

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

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

+0

“我需要一种方法来扫描我的项目中的所有视图,看看所有的令牌是否已经在数据库中了 - ”我不太明白这句话。你在说运行时还是设计时? – 2009-11-27 09:25:48

+0

任何方式都可以接受。可以对aspx进行设计时解析。但我想它更容易做一些类似于controlltree可用的trace.axd的东西。 – 2009-11-27 10:52:37

+0

我只看了一眼trace.axd,发现我的HtmlHelper不会在controlltree中生成一个条目。所以我猜想反射不是一个可能的方法。 – 2009-11-27 11:14:38

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

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

如果不成功,您可以尝试依靠蜘蛛(GoogleBot或其他方式)击中所有页面,并触发现有的日志记录代码。

或者,您可以将所有页面名称存储为常量或枚举值。如果你使用枚举值,你可以很容易地通过它们(使用Enum.GetValues)并检查它们是否在数据库中。所有这些说,如果页面存储在数据库中,你不能废除所有调用它们的静态页面,并且动态地从数据库中已有的内容生成所有内容吗?