インライン式（<%=, <%@, <%#, <%$, <%--）の概要

[.NET Framework の ASP.NET インライン式の概要](http://support.microsoft.com/kb/976112/ja)から

## < %... % > 　…　コードブロックを埋め込む

```csharp
<%@ Page Language="VB" %>
<html>
<body>
    <form id="form1" runat="server">
    <% For i As Integer = 16 To 24 Step 2%>
    <div style="font-size: <% Response.Write(i)%>">
        Hello World<br />
    </div>
    <% Next%>
    </form>
</body>
</html>
```

## <%= ... %> 　…　式を表示する
`Response.Write(...)` のステートメントと同等

```csharp
<%@ Page Language="VB" %>
<html>
<body>
    <form id="form1" runat="server">
    <%=DateTime.Now.ToString() %>
    </form>
</body>
</html>
```

## < % @... % >　…　ディレクティブの式

いろいろ種類がある

[テキスト テンプレートのディレクティブの構文](https://msdn.microsoft.com/ja-JP/ja/library/xz702w3e(v=vs.100).aspx)

[Text Template Directive Syntax](https://msdn.microsoft.com/en-us/library/xz702w3e(v=vs.100).aspx)

## < %#... % >　…　データバインディング式

コントロールのDataBindメソッドが呼び出されるとき、指定したプロパティの値に変換する

以下の場合、Submitボタンを押すと **<%# ... %>** が選択した文字に表示される

```aspx-cs:sample.aspx
    <script language="C#" runat="server"> 
        void SubmitBtn_Click(Object sender, EventArgs e) { 
          Page.DataBind(); 
        } 
    </script> 

    <form runat="server"> 
        <asp:DropDownList id="StateList" runat="server"> 
          <asp:ListItem>CA</asp:ListItem> 
          <asp:ListItem>IN</asp:ListItem> 
          <asp:ListItem>KS</asp:ListItem> 
          <asp:ListItem>MD</asp:ListItem> 
        </asp:DropDownList>        
        <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>         
        <p>
        <!-- CA,IN,...が表示される -->
        Selected State: <asp:label text='<%# StateList.SelectedItem.Text %>' runat="server"/>      
    </form> 
```

[データ バインディング式の構文](https://msdn.microsoft.com/ja-JP/ja/library/bda9bbfx(v=vs.100).aspx)

[Data-Binding Expression Syntax](https://msdn.microsoft.com/en-us/library/bda9bbfx(v=vs.100).aspx)

## < % $... % >　…　式ビルダー

次のファイルから参照する

* アプリケーション構成ファイル（Web.config）
* リソースファイル（*.resx）

#### 構文
`<% $ 式プレフィックス: 式の値 %>`

**式プレフィックスの例**
 
|式プレフィックス||
|:--|:--|
|AppSettings|AppSettingsから参照|
|ConnectionStrings|connectionStringsから参照|
|Resources|リソースファイルから参照|

上記以外も指定できるらしい

#### サンプル

##### *AppSettingsサンプル*
***
```xml:Web.config
<appSettings>
    <add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>
```
```aspx-cs:sample.aspx
<div id="footer">
    <asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>
```

##### *ConnectionStringsサンプル*
***
```xml:Web.config
<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>
```
```aspx-cs:sample.aspx
<asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>
```
> 引用元はConnectionStringsの大文字小文字が区別されていない

##### *Resourcesサンプル*
***
```xml:Messages.resx
<data name="ThankYouLabel"><value>Thank you very much!</value></data>
```
```aspx-cs:sample.aspx
<asp:Label id="label1" runat="server" text="<%$ Resources: Messages, ThankYouLabel %>" />
```

> リソースファイル名を指定する

[ASP.NET Expressions Overview](https://msdn.microsoft.com/en-us/library/d5bd1tad.aspx)

[ASP.NET 式の概要](https://msdn.microsoft.com/ja-jp/library/d5bd1tad.aspx)

## < %--...--% > 　…　サーバー側コメントブロック
サーバー側コメントブロック
クライアントには送られない

```csharp
<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim strName As String
        strName = Session("userName")
        lblUserName.Text = strName
    End Sub
</script>
<html>
<body>
    <form id="form1" runat="server">
    <%-- Label for UserName このコメント行はクライアントへは送られない --%>
    <asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
    </form>
</body>
</html>
```