我在我的网站上使用了一个homebrewn CMS。通过在视图中插入html-helper来使用其中的文本:
<%=Html.CmsEntry("About.Title")%>
CMS的条目存储在SQLServer中。我需要一种方法来扫描项目中的所有视图,看看是否所有标记都已存在于数据库中。
有办法做到这一点吗?我已经在运行时输入了一个DB,当找不到令牌时,我需要一种方法来执行此操作而不访问每个页面。也许通过反思?
答案 0 :(得分:0)
执行此操作的一种方法是创建一个页面(控制器操作),该页面扫描查找“Html.CmsEntry”的文件并解析页面名称,然后查询数据库。
如果您可以从开发机器访问数据库,则可以在控制台应用程序中执行此操作,并将其设置为构建操作,因此无论何时编译,它都会运行。
如果不这样做,您可以尝试依靠蜘蛛(GoogleBot或其他方式)点击您的所有网页,然后触发现有的日志记录代码。
或者,您可以将所有页面名称存储为常量或枚举值。如果您使用了枚举值,则可以轻松地旋转它们(使用Enum.GetValues
)并检查它们是否在数据库中。
所有这一切,如果页面存储在您的数据库中,您是否不能取消调用它们的所有静态页面,并从数据库中已有的内容动态生成所有内容?