aspの基本的な文法
- サーバ処理は
<% %>
で囲みます。- サーバ処理(
<% %>
で囲まれた箇所)は出力(レスポンス)されません。
- サーバ処理(
- サーバ処理以外の箇所は普通の
html
と同じように、そのまま出力されます。
サーバ処理で変数などを出力したい場合はresponse.write(出力する変数など)
を使用します。
<% resonse.write("sample") %>
は<%= "sample" %>
と書き換えることができます。
下記にサンプルを示します。
<!DOCTYPE HTML>
<html>
<head>
<title>商品マスタ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<%
'この部分はサーバ処理のため出力されません
dim outtext
outtext = "テスト出力"
%>
<body>
<% '↓この部分はサーバ処理で「出力する処理」を行っているため「サーバ処理で出力」と出力されます %>
<% response.write("サーバ処理で出力") %>
<% '↑ %>
<table class="common-table">
<caption>商品マスタ</caption>
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>単価</th>
</tr>
</thead>
<tbody>
<%
'SQLでデータ取得
Rs.Open strSql,Conn,3,1
If Not Rs.EOF Then
Do While Not Rs.EOF
'1件ずつ出力する
response.write("<tr><td>" & Rs("商品コード") & "</td><td>" & Rs("商品名") & "</td><td>" & Rs("単価") & "</td>")
Rs.MoveNext
Loop
End If
Rs.Close
Conn.Close
%>
</tbody>
</table>
<%' ↓の処理は2行とも同じ結果になります %>
<%= outtext %>
<% response.write(outtext) %>
<% '↑ %>
</body>
</html>
サーバ側でプログラムを実行し、出力されたhtml
は下記にのようになります。
<!DOCTYPE HTML>
<html>
<head>
<title>商品マスタ</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
サーバ処理で出力
<table class="common-table">
<caption>商品マスタ</caption>
<thead>
<tr>
<th>商品コード</th>
<th>商品名</th>
<th>単価</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>ペン</td><td>100</td>
<tr><td>2</td><td>ノート</td><td>200</td>
</tbody>
</table>
テスト出力
テスト出力
</body>
</html>
エンコード処理
例えば"<strong>sample</strong>"
を文字列として表示したい場合、response.write("<strong>sample</strong>")
としても、 <
と>
はhtml
のタグとして認識されてしまい、sampleと表示されてしまいます。
html
では,<
を&lt;
と記述し,>
を&gt;
と記述する必要があります。
そのためには出力する文字列をエンコード処理する必要があります。
上記の例をエンコードする場合はresponse.write(Server.HTMLEncode("<strong>sample</strong>"))
という処理になります。