asp.netの基本・aspとの違い

ここまでaspを用いてWEBアプリの基本を説明してきましたが、ここまでのサンプルコードを見てわかるように、aspはレスポンスするhtmlのレイアウトとサーバ処理が1つのファイルに記載しているため、複雑な画面になってくると、処理を把握するのが大変になってしまいます。

aspphpのようにhtmlの中にサーバ処理のプログラムを記載する方法とは違い、ASP.NETではサーバ処理とhtmlレイアウトを別ファイルで管理します。

別ファイルで管理するため、コードが整理され処理を把握しやすくなります。

aspsample.aspというファイルがあったとしたら、ASP.NETではhtmlレイアウトを実装するsample.aspxと、サーバ処理を実装するsample.aspx.vb(サーバ言語によって拡張子は異なります)の2つのファイルになります。

前回までのaspの処理をASP.NETに置き換えたコードは下記のようになります。

※本来は下記のようなやり方はしませんが、説明の都合であえて下記のような方法で実装しています。

sample.aspx(htmlレイアウトのファイル)
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="sample1.aspx.vb" Inherits="sample1" %>

<html>
<head>
    <title>aspを移植</title>
    <script type="text/javascript">
        function touroku(){
      //クライアント側の入力チェック
      if(document.frmMain.txtName.value==''){
        alert('商品名を入力してください。');
        return;
      }
      if(document.frmMain.txtPrice.value==''){
        alert('単価を入力してください。');
        return;
      }
            document.frmMain.hidMode.value = "1";
            document.frmMain.submit();
        }
        function init(){
      if(document.frmMain.hidCheck.value=="1"){
        alert("選入力した商品名はすでに登録されています。");
      }
        }
    </script>
</head>
<body onload="init()">
  <form id="frmMain" runat="server">
    <input type="button" value="登録" onclick="touroku()">
    商品名:<input type="text" name="txtName" value="<%= strName %>">
    単価:<input type="text" name="txtPrice" value="<%= strPrice %>">
    <input type="hidden" name="hidMode" />
        <table>
            <th>商品名</th>
            <th>単価</th>
            <%=detail%>
        </table>
    <input type="hidden" value="<%=hidCheck %>" name="hidCheck" />
  </form>
</body>
</html>
sample.aspx.vb(サーバ処理のファイル)
Imports System.Data

Partial Class sample1
  Inherits System.Web.UI.Page
  'htmlに埋め込む変数
  Public detail As String = String.Empty
  Public hidCheck As String = String.Empty
  Public strName As String = String.Empty
  Public strPrice As String = String.Empty

  ''' <summary>
  ''' ページロードイベント
  ''' </summary>
  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If Request.Form("hidMode") = "1" Then
      If checkData() Then 'データチェック
        insertData()
      Else
        hidCheck = "1"
        'エラー時は値を保持
        strName = Request.Form("strName")
        strPrice = Request.Form("strPrice")
      End If
    End If

    Dim dt As DataTable = getData() 'データ取得
    dispData(dt) 'データ表示
  End Sub

  ''' <summary>
  ''' データ取得
  ''' </summary>
  Private Function getData() As DataTable
    Dim dt As DataTable
    'データを取得する処理は省略します
    Return dt
  End Function

  ''' <summary>
  ''' データ表示
  ''' </summary>
  Private Sub dispData(ByVal dt As DataTable)
    detail = ""
    For Each row As DataRow In dt.Rows
      detail &= "<tr><td>" & row("商品名").ToString & "</td><td>" & row("単価").ToString & "</td>" & vbCrLf
    Next
  End Sub

  ''' <summary>
  ''' 登録データをチェック
  ''' </summary>
  Private Function checkData() As Boolean
    'データが存在するかどうかチェックする処理は省略します
    'すでにデータが登録されていたらtrueを返します
  End Function

  ''' <summary>
  ''' データ登録
  ''' </summary>
  Private Sub insertData()
    'データを登録する処理は省略します
  End Sub
End Class

長くなってしまうので、サーバ処理は省略していますが、フォームアプリと同じようなイメージでサーバ処理は実装することができます。

上記のコードではaspxファイルに(htmlレイアウトのファイル)に、まだstrNamedetailなど、サーバ処理の変数が残っています。

次ページ以降でhtmlレイアウトとサーバ処理を分離して、効率よくASP.NETを実装していく方法を紹介していきます。


関連記事

  • asp.netのrepeaterで表示・編集・登録処理を行う その2

    asp.netのrepeaterで表示・編集・登録処理を行う その1でRepeaterを使って、下記のようなhtmlを動的に出力することが出来ました。今回はクライアント側での入力制御とサーバ側での登録...


  • asp.netのrepeaterで表示・編集・登録処理を行う その1

    ASP.NETのWEBサーバコントロールのRepeaterコントロールを使用し、データの表示・編集・登録処理の流れの実装例を紹介します。具体的には、DBに登録されているデータをRepeaterコントロ...


  • asp.net|repeaterで出力したラジオボタンを1つのみ選択する方法

    Repeaterの中にラジオボタンを定義して出力すると、下記のように複数選択できてしまいます。原因はRepeaterで出力する際にIDとNAME属性が変わってしまうためです。詳しくはaspnet-re...


  • asp.netのrepeaterで出力時にjavascriptのイベントを定義する

    asp.netのrepeaterで表示・編集・登録処理を行う その2でrepeaterを使って、表示→編集→登録の一連の流れが実装できました。今回は、表示→編集→登録のうち、編集について、もっと細かい...


  • asp.netのrepeaterで出力したコントロールにjavascriptでアクセスする

    ASP.NETのRepeaterで動的に出力したコントロールにjavascriptでアクセスする方法を紹介します。例として、登録ボタン押下時に、選手名のテキストボックスが未入力の場合はアラートを表示す...


  • asp.netのポストバックの基本

    aspでは、画面再表示時にテキストボックスなどのコントロールの値を保持・復元するためには、コントロールの値をsubmitし、サーバ処理でコントロールのプロパティに再セットして状態を復元する必要がありま...


  • asp.netのhtmlサーバコントロールの基本

    asp.netの基本・aspとの違いで紹介したコードはaspxファイルに(htmlレイアウトのファイル)に、まだstrNameやdetailなど、サーバ処理の変数が残っています。htmlサーバコントロ...


  • asp.netのイベントの基本と注意事項

    押下したボタンによってサーバ処理を分岐したい場合(例:登録ボタン、削除ボタン、検索ボタンなど)、いままでの方法では処理区分としてhiddenをsubmitし、処理を分岐していました。ASP.NETでは...


  • 地附山で自然に触れ合い心も体もリフレッシュ

    日常から抜けだして、自然に触れて心も体もリフレッシュしたいなら、長野県の地附山がおすすめです。トレッキングというよりもハイキングのような感じで、登山装備もいらずに気軽に歩けるのでおすすめスポットです。...


  • 須坂市の絶景スポット米子大瀑布の紹介

    8月の新緑の季節に行ってきました長野県須坂市の米子大瀑布の、壮大な自然が絶景でとても感動したので紹介します。米子大瀑布は、須坂市の山中にある2つの滝です。米子大瀑布にあるこれらの滝は日本の滝百選に選ば...