- PR -

エラー 1 '_Default' に 'TextBox1' の定義がありません

投稿者投稿内容
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2008-04-04 21:09
お世話になっております。

VS2005、ASP.NETのC#で開発しております。

ページにテキストボックスを貼り付け、C#のソースから下記のように参照すると
string aa = this.TextBox1.Text;
「エラー 1 '_Default' に 'TextBox1' の定義がありません」というビルドエラーが出ます。他のコントロールも同様で、上記をコメントにするとビルド通ります。

「ページのビルド」などもやってみましたが、ダメでした。
何かコアな部分でおかしくなってるのでしょうか?
どこを確認してよいかも分からないので、ご存知の方いらっしゃったら教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-07 10:17
引用:

Qさんの書き込み (2008-04-04 21:09) より:

「エラー 1 '_Default' に 'TextBox1' の定義がありません」というビルドエラーが出ます。


原因はエラーの内容そのものだったりしないでしょうか? C# であるのに textBox1 ではなくて TextBox1 (最初の t が大文字) と記載されているのが気になります。

ともかく partial class _Default に TextBox1 の定義がなされているか確認した方が早いですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-04-07 10:43
これだけの情報だと、じゃんぬさんが書いている大文字小文字の部分が一番の問題のように思えますね。
VS上のインテリセンスを利用していて、それでも大文字のソースコードができているのでしょうか?

なお、Webサイトプロジェクトで構築している場合は partial class _Default の確認は普通はできないでしょうから、aspx側のテキストボックスの名称がどうなっているかを確認してみるといいと思います。
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2008-04-07 11:30
どっとねっとふぁんさん、じゃんぬねっとさん、回答ありがとうございます。

記載不足すみません。

WEBページのデザイン画面でテキストボックスをツールボックスからドラッグしてはりつけると
当方の環境ではデフォルトで「TextBox1」というIDなのですが、通常は小文字なのでしょうか?
インテリセンスを使用してコード記述しているので、ID自体は問題ないと思います。
記述するイベントもページロードやボタンクリックに変えてもビルドでエラーになってしまいます。
aspxのソースにも
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
と、定義は入ってます。
他のページで同様のことをすると、問題なく動作するのですが・・・

それから、関係あるかは分からないのですが、このページはマスターページ内のコンテンツページです。


ちなみにVS2003あたりだと、コントロールを貼り付けたときにcsファイル内にコードが自動生成されていた
と思うのですが、同様の記述はVS2005ではどこにあるのでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-04-07 13:15
> 他のページで同様のことをすると、問題なく動作するのですが・・・

このことから、その特定のページだけが問題だ、ということがわかりますね。
でも、ためしにマスターページ内にテキストボックス貼り付けて動かしてみましたけど、そんなエラーはでませんね。

ちなみに、
string aa = this.TextBox1.Text;
というコードから考えるとポストバック時に入力されたデータを取り出そうとしているんじゃないかと思いますが、そのとき何かやってませんか?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-07 13:17
新規Webサイトプロジェクトを作成して確認しましたが、「TextBox1」でした。

引用:

Qさんの書き込み (2008-04-07 11:30) より:

それから、関係あるかは分からないのですが、このページはマスターページ内のコンテンツページです。



TextBox1をマスターページで定義している場合、Qさんのコードではコンテンツページからは参照できません。(逆の場合も)

もしそうなのであれば、このあたりの過去スレッドが参考になるかも。
(過去スレッドを「マスター コンテンツ」で検索しただけですが)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42883&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43144&forum=7

引用:

ちなみにVS2003あたりだと、コントロールを貼り付けたときにcsファイル内にコードが自動生成されていた
と思うのですが、同様の記述はVS2005ではどこにあるのでしょうか?



Webサイトプロジェクトの場合、定義はビルド時に自動生成されるので通常は見えませんが、

コード:
※Default.aspxの1行目※
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
 AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
 Title="Untitled Page" %>



コード:
※Default.aspx.csファイルの一部※
public partial class Default : System.Web.UI.Page



こんな感じで意図的にビルドエラーを起こすことで見ることができます。
# もう少し真っ当な方法があるかもしれないけど私は知らないので…
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-04-07 13:44
> Webサイトプロジェクトの場合、定義はビルド時に自動生成されるので通常は見えませんが、

デバッグ実行をすると、
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
ここの下に自動生成されたプログラムが保存されます。
ファイル名等も自動生成になってしまうので探しにくいですが、デバッグを開始する前に一度全部消したうえで実行すると見つけやすいと思います。

#VS2008だと利用するフォルダが変わってますので注意してください。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-07 13:55
引用:

どっとねっとふぁんさんの書き込み (2008-04-07 13:44) より:
> Webサイトプロジェクトの場合、定義はビルド時に自動生成されるので通常は見えませんが、

デバッグ実行をすると、
C:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files
ここの下に自動生成されたプログラムが保存されます。
ファイル名等も自動生成になってしまうので探しにくいですが、デバッグを開始する前に一度全部消したうえで実行すると見つけやすいと思います。

#VS2008だと利用するフォルダが変わってますので注意してください。



見つかりました。便乗ですがありがとうございます。
# デバッグ実行中に呼び出し履歴を見るとdll名がわかるので、
# それを手がかりにするとすぐ見つかるかも?

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