2009-11-26 56 views
0

我在我的網站中使用了一個自制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

回答

0

執行此操作的一種方法是創建一個頁面(控制器操作),掃描查找「Html.CmsEntry」的文件並解析出頁面名稱,然後查詢數據庫。

如果您可以從開發機器訪問數據庫,可以在控制檯應用程序中執行此操作,並將其設置爲構建操作,因此無論何時編譯,它都會運行。

如果不成功,您可以嘗試依靠蜘蛛(GoogleBot或其他方式)擊中所有頁面,並觸發現有的日誌記錄代碼。

或者,您可以將所有頁面名稱存儲爲常量或枚舉值。如果你使用枚舉值,你可以很容易地通過它們(使用Enum.GetValues)並檢查它們是否在數據庫中。所有這些說,如果頁面存儲在數據庫中,你不能廢除所有調用它們的靜態頁面,並且動態地從數據庫中已有的內容生成所有內容嗎?