2013-06-27 30 views
0

我正在構建一個相當複雜的Web應用程序,用於數據可視化和即將安裝在許多服務器上的消息傳遞。它所依賴的SQL數據庫部分被運行在服務器上的另一個應用程序填充,但是一些Web應用程序本身所需的表不會自動生成,因此我在EF DbContext的構造函數中構建了一個檢查。它驗證所需的表存在於數據庫中,並在它們不存在的情況下創建它們。ASP.NET MVC4:如何在全新安裝Web應用程序後重定向到類似安裝程序的頁面?

這工作得很好。現在我想檢查這些表是否存在正確操作所需的一些條目。如果這些值不存在,我希望用戶(任何用戶)被重定向到某種設置頁面,其中可以配置Web應用程序的基本設置。您可以認爲它與您在Web服務器上瀏覽新安裝的TYPO3或Wordpress時可以獲得的典型安裝步驟非常相似,您可以在其中設置基本設置。

現在我想知道什麼是做到這一點的最佳實踐:我應該創建一個「標誌」,在一定的global.asax.cs靜態布爾(可能像needsSetup),我檢查默認的控制器,然後有條件地重定向到設置視圖?或者可以/應該使用某種過濾器來完成這項工作?還是有更好的方法來做到這一點?

在此先感謝您的幫助!

回答

1

您可以創建一個基本控制器並覆蓋OnActionExecuting方法,您將檢查系統是否準備就緒,如果沒有重定向到您的設置操作,這裏是類似的帖子How to redirect from OnActionExecuting in Base Controller?。從該基類繼承所有控制器(除了安裝一),你會得到你想要的

+0

謝謝亞歷山大,這聽起來很有前途。事實上,它似乎與使用過濾器非常相似,但在較低的水平上。在每個控制器上放置過濾器屬性或從定製的基礎控制器派生每個控制器 - 這可能是同樣的努力,因爲您必須至少觸摸每個控制器。我相信它效果很好,對此毫無疑問,但我想我會繼續提出這個問題,同時針對這個話題提出一些更多的思路。 – Robert

+0

在我看來,從基類繼承是一種「更乾淨」的方式來做到這一點,並且很可能您可能會使用基本控制器來處理其他事情,如異常處理等。 –

相關問題