- PR -

ASP.NETでHTMLの中に直接VBコードを書くときのclassの使い方

投稿者投稿内容
taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2003-08-14 11:07
ASP.NETでHTMLソース内に直接VBのコードを書くときに
クラスを宣言しようとするとエラーになってしまいます。
エラーを出さないようにするにはどのようにしたら良いのでしょうか。
また、HTMLの中に直接VBでコードを書く際にはクラスを使えないのでしょうか?


<%
 dim i as integer
 dim aaa as string
 dim clsdb as new DBCommon()  ←”DBCommonが定義されていません”とのエラー表示
 dim strGetData() as string

 response.write("<table>")
 response.write(" <tr>")
 response.write(" <td>" & aaa & "</td>")
 response.write("<td>社員番号</td>")
 response.write(" <td>社員名</td>")
 response.write(" </tr>")
 response.write("</table>")
%>
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-08-14 11:31
こんにちは

コード:
<%@ Assembly Name="アセンブリ名" %>



でクラスを定義したアセンブリの名前を指定してやるとよいようです。

例を示すと

使用されるクラス
コード:
'アセンブリ名ClassLib
Namespace ClassLib
    Public Class Class1
        Public Function getMessage() As String
            Return "Hello World!!"
        End Function

    End Class
End Namespace



ClassLib.Class1を使用するWebForm
コード:
<%@ Page Language="vb" AutoEventWireup="false" %>
<%@ Assembly Name="ClassLib" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <title>WebForm2</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">
<% 
 Dim c as New ClassLib.Class1()
 response.write(c.getMessage()) 
%>
  </body>
</html>


taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2003-08-14 12:04
FOXさま ありがとうございました。

ご指摘のようにやってみたのですが、今度は下記のようなエラーが出てしまいました。

このエラーの解決方法をどなたか教えてください。


<%@ Page Language="vb" AutoEventWireup="false" %>
<%@ Assembly Name="DBCommon1" %> ←エラー

<%
 dim i as integer
 dim aaa as string
 dim clsdb as new DBCommon1.DBCommon()
 dim strGetData() as string

%>

解析エラー メッセージ:
ファイルまたはアセンブリ名 DBCommon1、またはその依存関係の 1 つが見つかりませんでした。

FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-08-14 12:18
こんにちは。

このエラーは対象のアセンブリが見つからない場合に出ます。
アセンブリがこのWebアプリのbinにない場合や名前が違うと発生します。
binのディレクトリの内容を確認してください。

この場合
Webアプリのディレクトリ/bin/DBCommon1.dll(もしくは.exe)
があれば大丈夫なはずです。
taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2003-08-14 13:05
こんにちは

FOX様 ありがとうございました。

確かにWebアプリの中のbinというフォルダー内にはご指摘のファイルはありませんでした。

このdllまたはexeは自動的に生成されるものでしょうか?
それとも自分で作成しなければいけないものでしょうか?
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-08-14 13:57
こんにちは。

話が少し食い違ってきているような気がします。

もしかしてVS.NETでない環境を使っていたりしますか?

テキストエディタonlyとか、webmatrixとかだったりしますか?
taro
ベテラン
会議室デビュー日: 2003/08/06
投稿数: 55
投稿日時: 2003-08-14 14:11
こんにちは。

FOX様、お手数をお掛けしております。

開発環境は VS.NETで開発しています。

現状ではフォルダーbinの中には"プロジェクト名".dllと
"プロジェクト名".pdbしかありません。



FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-08-14 14:29
こんにちは

ならば話は簡単な気がします。

DBCommon1.DBCommonがWebアプリプロジェクトの中のクラスなら
<%@ Assembly Name="プロジェクト名" %>
でよいと思います。

別プロジェクトなら参照設定をするだけでよいはずです。

スキルアップ/キャリアアップ(JOB@IT)