我在我的网站上使用自制的CMS。其中的文本是通过在视图中插入html-helper来使用的:
<%=Html.CmsEntry("About.Title")%>CMS的条目存储在SQLServer中。我需要一种方法来扫描我的项目中的所有视图,并查看是否所有令牌都已经在数据库中。
有没有办法做到这一点?我已经在运行时在数据库中输入了一个条目,当找不到令牌时,但我需要一种方法来做到这一点,而无需访问每个页面。也许是通过反射?
发布于 2011-03-03 05:02:41
要做到这一点,一种方法是创建一个页面(控制器操作),该页面扫描文件,查找"Html.CmsEntry“并解析出页面名称,然后查询数据库。
如果您可以从开发机器访问数据库,则可以在控制台应用程序中执行此操作,并将其设置为构建操作,这样,无论何时进行编译,它都会运行。
如果做不到这一点,您可以尝试依靠爬行器(GoogleBot或其他)来访问所有页面,并触发现有的日志记录代码。
或者,您可以将所有页面名称存储为常量或枚举值。如果您使用枚举值,则可以轻松地遍历它们(使用Enum.GetValues)并检查它们是否在数据库中。
话虽如此,如果页面存储在数据库中,难道不能删除调用它们的所有静态页面,而从数据库中已有的内容动态生成所有内容吗?
https://stackoverflow.com/questions/1804574
复制相似问题