2012-03-16 38 views
0

我需要讓一個不專業的人能夠自己安裝ASP.NET應用程序。如何有條件地禁止默認的ASP.NET網站主人的asp:MenuItem?

安裝程序(一個人)會將應用程序文件複製到虛擬目錄中。

安裝程序將獲取適用於從sysadmin創建數據庫的SQL Server名稱用戶名和密碼。

該應用程序有一個網頁,它自動在指定的SQL服務器上創建一個空數據庫,其名稱由安裝程序提供,該安裝程序使用特定的Web表單設置服務器的名稱。

我希望安裝頁面只出現在主菜單上一次。

安裝頁面在主服務器中有一個鏈接,作爲asp:MenuItem。

這是在數據庫安裝後抑制此菜單項的最簡單方法嗎?

我想到了Web.config中的一個特定變量,它將保存指示數據庫是否已安裝並準備好使用或不使用的值,但有些人不喜歡此解決方案。

+2

我想你應該有這樣的任務自定義用戶配置,而不是我們web.config。 – 2012-03-16 20:32:32

+0

添加到Amritpal Singh的建議。對於您的特定用例,如果您的用戶實際上未登錄到應用程序,則可能需要使用cookie來存儲此信息。除非你只希望你的網頁只顯示一次。 – 2012-03-16 20:37:46

+0

您可以在會話期間緩存存儲在配置文件中的變量。 Cookie可能適合您的情況;您不希望將數據保存到您的Web.Config文件 - 這不是它的目的:) – IrishChieftain 2012-03-16 20:40:22

回答

2

這給你一個選擇範圍:

Nine Options for Managing Persistent User State in Your ASP.NET Application

你可以使用在Web.config文件appSettings部分產生的項目或文件夾級的變量和緩存爲瓦爾的持續時間會議:

<appSettings> 
    <add key="customsetting1" value="Some text here"/> 
</appSettings> 

System.Configuration.Configuration rootWebConfig1 =     
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null); 

if (rootWebConfig1.AppSettings.Settings.Count > 0) 
{ 
    System.Configuration.KeyValueConfigurationElement customSetting = 
     rootWebConfig1.AppSettings.Settings["customsetting1"]; 
    if (customSetting != null) 
     Console.WriteLine("customsetting1 application string = \"{0}\"", 
      customSetting.Value); 
    else 
     Console.WriteLine("No customsetting1 application string"); 
} 

更多信息:http://msdn.microsoft.com/en-us/library/ms228154.aspx

+0

我會在應用程序啓動時讀入文件,在會話中存儲變量,然後在最後將它們寫回文件 - 也許從global.asax文件中:http://stackoverflow.com/questions/720969/when- to-use-application-start-vs-init-in-global-asax – IrishChieftain 2012-03-16 21:08:52

+0

爲什麼不只是數據庫呢?您可以創建用戶配置文件並將bool與特定用戶相關聯。必須是100種方式來做到這一點,但最好的方式將取決於您的特定需求。 – IrishChieftain 2012-03-16 21:24:31

+0

你的意思是什麼「創建數據庫」? – IrishChieftain 2012-03-16 21:40:44

相關問題