ASP.NET 運算式概觀
更新:2007 年 11 月
ASP.NET 運算式是宣告式的方法,會根據執行階段時評估的資訊設定控制項屬性 (Property)。例如,您可以使用運算式設定屬性值,該值是依據應用程式之組態檔和資源檔中的連接字串 (Connection String)、應用程式設定和其他值而來。在剖析頁面的宣告式項目時,於執行階段評估運算式,而運算式所表示的值則會代替運算式語法 (由於是在剖析時期評估運算式,因此您無法在程式碼中動態建立運算式)。
運算式一般使用在資料來源控制項中,用來參考連接字串。您可以使用指定程式組態檔中連接字串位置的運算式,而不需直接加入連接字串至資料來源控制項為屬性值。在執行階段,從組態檔讀取程式連接字串來解析運算式。您可以針對要在執行階段解析的任何屬性設定使用運算式,而非設定為靜態值。
使用運算式可幫助您依下列方式維護應用程式:
透過以宣告式的方法參考動態資訊,就可以減少應用程式中的程式碼。這樣可避免撰寫在執行階段設定屬性值的程式碼。
在多個控制項中重複使用相同設定。例如,如果在 Web.config 檔中儲存連接字串,然後使用運算式參考頁面中的連接字串,您會在某個集中位置變更連接字串,而非在每個使用連接字串的控制項中變更。
可以在 Web.config 檔中儲存如連接字串認證 (或其他應用程式資料) 之類的敏感資料,然後加密資料。
如果正在使用 Visual Studio 這類視覺化設計工具 (Visual Designer),則可以利用設計工具中的工具,協助您建置運算式。
運算式也是可擴充的,因此您可以定義自己的運算式語法。接著可以使用自訂邏輯,建立會呼叫自訂運算式處理常式的運算式,以傳回值。
基本語法
ASP.NET 運算式包含了下列基本語法:
<%$ expressionPrefix: expressionValue %>
貨幣符號 ($) 在 ASP.NET 中表示後接運算式。運算式前置字元會定義運算式型別,例如 AppSettings、ConnectionStrings 或 Resources。冒號 (:) 之後是 ASP.NET 將解析的實際運算式之值。
運算式語法沒有繫結至任何特定的 .NET 語言。無論在 ASP.NET 頁面中使用 Visual Basic、C# 或任何其他程式語言,都可以使用相同的運算式語法。
連接字串
根據 Web.config 檔所儲存的連接字串值,運算式通常用來設定控制項的連接字串屬性,例如 SqlDataSource 控制項。例如,您可能有下列具連接字串屬性的 SqlDataSource 控制項:
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT * FROM [Employees]"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>
反白顯示的程式碼會顯示運算式,該運算式是包含在引號中並代表屬性的值。運算式會參考名為 "NorthwindConnectionString1" 的連接字串,這個連接字串是在 Web.config 檔的 connectionStrings 項目中所定義。connectionStrings 項目看起來可能如下所示:
<configuration>
<connectionStrings>
<add name="NorthwindConnectionString1"
connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<!-- additional settings -->
</configuration>
![]() |
---|
為確保安全性,建議您將含有連接字串的組態檔區段加密。如需詳細資訊,請參閱使用受保護的組態加密組態資訊。在前例中,組態檔的 configuration 區段會顯示為未加密,以避免困擾。 |
會提供名稱給每個連接字串,您可以在運算式中使用此名稱,以便於 ASP.NET Web 網頁中加以參考。
應用程式設定
除了針對連接字串使用運算式外,您可以使用可存取網站之組態檔中所定義的運算式,來參考應用程式設定。例如,您可能會將經常使用的字串 (例如網站版權訊息) 儲存在 Web.config 檔的 appSettings 區段中,此區段看起來可能如下所示:
<appSettings>
<add key="copyright" value="(c)Copyright 2004 Northwind Traders"/>
</appSettings>
在 ASP.NET 頁面中,可以使用類似下列的運算式參考該值:
<%$ AppSettings: copyright %>
這方便您維護組態檔中經常引用的項目,而不需在每個頁面上變更相同文字。
使用運算式來顯示靜態內容
如果要使用運算式做為頁面或控制項的靜態值,您可以使用運算式做為 ASP.NET 伺服器控制項的一部分。典型的策略是加入 Literal 控制項,並將其 Text 屬性設為運算式。例如,要將著作權注意事項加入每一頁面底部,您可以使用下列項目:
<p align="center">
<asp:Literal text="<%$ AppSettings: copyright %>"/>
</p>
資源檔
除了顯示包含在組態檔中的值外,可以顯示儲存於資源檔 (.resx 或 .resource) 中的值。您通常會使用資源檔來儲存特定語言,或語言和文化組合的資訊。藉由使用資源檔和運算式,您可以建立會以不同語言顯示文字的 Web 網頁,這些語言是視執行階段所判斷的值而定,例如,瀏覽器所報告的語言和文化特性 (Culture) 設定,或是使用者明確選擇的語言。
例如,自動將內容當地語系化時,您可以使用運算式語法來設定伺服器控制項的 Text 屬性,如下列範例所示:
<asp:Label id="label1" text="<%$ Resources: Messages, ThankYouLabel %>" />
在 App_GlobalResources 資料夾中,您可以擁有名為 Messages.resx、Messages.es.resx、Message.de.resx 等資源檔,這是每個您要支援之語言的訊息資源檔。Messages.resx 檔案表示中性 (後援) 資源,如果未設定明確文化特性則會使用此資源。在 Messages.resx 檔案中,可能會有下列項目:
<data name="ThankYouLabel"><value>Thank you very much!</value></data>
您在其他資源檔中會有類似的項目,其中含有針對該資源檔所表示之語言適當轉譯的字串。如需使用資源和當地語系化運算式的詳細資訊,請參閱ASP.NET Web 網頁資源概觀。