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>"))という処理になります。


関連記事