ASP.NET 式の概要
更新 : 2007 年 11 月
ASP.NET 式は、実行時に評価される情報に基づいて、宣言によりコントロール プロパティを設定する方法です。たとえば、式を使用して、アプリケーションの構成ファイルやリソース ファイルに含まれる接続文字列、アプリケーション設定、およびその他の値に基づく値をプロパティに設定できます。式は、実行時、ページの宣言要素が解析されるときに評価され、式の構文はその式で表される値に置き換えられます。式は解析時に評価されるので、式をコードで動的に作成することはできません。
式は、接続文字列を参照するデータ ソース コントロールで使用するのが一般的です。データ ソース コントロールのプロパティ値として接続文字列を直接設定する代わりに、構成ファイルに含まれる接続文字列の場所を指定する式を使用できます。式は、実行時に構成ファイルから接続文字列を読み取ることで解決されます。プロパティ設定を静的な値として設定するのではなく、実行時に解決する場合は、式を使用できます。
式を使用すると、アプリケーションを次のように保持できます。
動的な情報を宣言で参照することにより、アプリケーション内のコードを少なくできます。これにより、実行時にプロパティ値を設定するコードを記述する手間を省くことができます。
同一設定を複数のコントロールで再利用できます。たとえば、接続文字列を Web.config ファイルに格納し、式を使用して接続文字列をページで参照する場合は、接続文字列を中央の 1 か所で変更でき、接続文字列を使用する各コントロールで変更する必要がありません。
接続文字列の資格情報などの重要情報やその他のアプリケーション データを Web.config ファイルに格納し、データを暗号化できます。
Visual Studio などのビジュアルなデザイナを使用している場合、そのデザイナのツールを利用して式を作成できます。
式は拡張性を備えているので、独自の式構文を定義することもできます。これにより、カスタム ロジックを使用して、値を返すカスタム式ハンドラを呼び出す式を作成できます。
基本構文
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>
強調表示されたコードが式を表しています。式は二重引用符で囲まれ、属性の値を示しています。式は Web.config ファイルの connectionStrings 要素で定義されている接続文字列 "NorthwindConnectionString1" を参照します。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 runat="server" text="<%$ AppSettings: copyright %>"/>
</p>
リソース ファイル
構成ファイルに格納されている値の他に、リソース (.resx または .resource) ファイルに格納されている値も表示できます。通常、リソース ファイルは、特定の言語や言語とカルチャの組み合わせに関する情報を格納するために使用します。リソース ファイルと式を使用すると、ブラウザから報告される言語とカルチャの設定、またはユーザーが明示的に選択した言語などの、実行時に決定される値に従って、さまざまな言語のテキストを表示する Web ページを作成できます。
たとえば、内容を自動的にローカライズする際、次の例のような式の構文を使用してサーバー コントロールの Text プロパティを設定できます。
<asp:Label id="label1" runat="server" text="<%$ Resources: Messages, ThankYouLabel %>" />
App_GlobalResources フォルダには、Messages.resx、Messages.es.resx、Message.de.resx (サポートする各言語の Messages リソース ファイル) などのリソース ファイルを格納できます。Messages.resx ファイルは、明示的にカルチャが設定されない場合に使用されるニュートラル (フォールバック) リソースを表します。Messages.resx ファイルには、たとえば次のようなエントリが含まれます。
<data name="ThankYouLabel"><value>Thank you very much!</value></data>
他のリソース ファイルには、そのリソース ファイルが表す言語で翻訳された文字列が入る同様のエントリが含まれます。リソースとローカライズでの式の使い方の詳細については、「ASP.NET Web ページのリソースの概要」を参照してください。