- PR -

Response.Writeの仕方について

1
投稿者投稿内容
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-09-14 13:37
ASP.NETでHTMLファイルにASPのようにプログラムの記述を
おこなっているのですが、下記の記述を行った場合、
<% Response.Write(a); %>の箇所で
「コンパイラ エラー メッセージ: CS1002: ; が必要です。」
といわれます。これはローカル変数であるaを使おうとしている
からでしょうか?

##ここから
void Page_Load(object sender, System.EventArgs e){
 aData()
}

void aData(){
string a = "Hello";
}

</head>
<body>

<% Response.Write(a); %>

</body>
</html>

よろしくお願いいたします。
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-09-14 14:00
変数のスコープの範囲とか考えてみれば、上記コードでは難しいのではないでしょうか。

コードビハインドを使わないのであれば、Page_Loadの前にグローバル変数として変数を定義するなど、やり方はいろいろあるかと思います。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-09-14 14:26
引用:

コデトンさんの書き込み (2005-09-14 13:37) より:
void Page_Load(object sender, System.EventArgs e){
 aData()
}

void aData(){
string a = "Hello";
}

</head>
<body>

<% Response.Write(a); %>

</body>
</html>



私自身はASP.NETはやったこと無いのですが、
見ていて気になった点を上げてみます。

コード:
void Page_Load(object sender, System.EventArgs e){
 aData()
}


で 「aData()」に「;」は必要ないんでしょうか?

コード:
void aData(){
 string a = "Hello";
}


ということは「変数a」はこのaData内部だけで有効であり

コード:
<% Response.Write(a); %>


で出力しようとしている「変数a」は別の場所で定義されている変数なんでしょうか?
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-09-14 15:16
ご返事ありがとうございます。

aData()の後に;を記述しておりませんでした。
失礼しました。また、aですがaData()で宣言している
だけです。

コードビハインドで記述する場合はPage_Load
などは使わず記述するものなのでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-09-14 15:21
ためしてみました。

> コンパイラ エラー メッセージ: CS1002: ; が必要です。

これは aData() の後に";"がないためにでます。
というか、その行がおかしいとちゃんと表示されますが。

#リモートからテストしてるのかな?

で、その部分をなおす(";"を追加する)と、今度は
「コンパイラ エラー メッセージ: CS0103: 名前 'a' は クラスまたは名前空間 'ASP.test_aspx' に存在しません。」
というエラーがでるようになります。
これがローカル変数のaを他のところで使おうとするからでるメッセージですね。

ちゃんと動くのはこんな感じのコードですね。

<%@ Page language="c#" %>
<script runat="server">
string a = null;
public void Page_Load(Object sender, EventArgs e)
{
aData();
}

void aData()
{
a = "Hello";
}
</script>
<html>
<body>
<% Response.Write(a); %>
</body>
</html>

ちなみに、この場合のaはけして「グローバル変数」ではないのでお間違いなく。
aspxは1つのクラスに自動的に変換されますから、aはそのクラスのフィールドということになります。
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-09-14 18:47
どっとねっとふぁん様

ありがとうございます。
解決いたしました。
試していただけるとは思いませんでした。
うれしかったです。
1

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