- - PR -
エラー 1 '_Default' に 'TextBox1' の定義がありません
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-04 21:09
お世話になっております。
VS2005、ASP.NETのC#で開発しております。 ページにテキストボックスを貼り付け、C#のソースから下記のように参照すると string aa = this.TextBox1.Text; 「エラー 1 '_Default' に 'TextBox1' の定義がありません」というビルドエラーが出ます。他のコントロールも同様で、上記をコメントにするとビルド通ります。 「ページのビルド」などもやってみましたが、ダメでした。 何かコアな部分でおかしくなってるのでしょうか? どこを確認してよいかも分からないので、ご存知の方いらっしゃったら教えてください。 | ||||||||||||||||
|
投稿日時: 2008-04-07 10:17
原因はエラーの内容そのものだったりしないでしょうか? C# であるのに textBox1 ではなくて TextBox1 (最初の t が大文字) と記載されているのが気になります。 ともかく partial class _Default に TextBox1 の定義がなされているか確認した方が早いですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2008-04-07 10:43
これだけの情報だと、じゃんぬさんが書いている大文字小文字の部分が一番の問題のように思えますね。
VS上のインテリセンスを利用していて、それでも大文字のソースコードができているのでしょうか? なお、Webサイトプロジェクトで構築している場合は partial class _Default の確認は普通はできないでしょうから、aspx側のテキストボックスの名称がどうなっているかを確認してみるといいと思います。 | ||||||||||||||||
|
投稿日時: 2008-04-07 11:30
どっとねっとふぁんさん、じゃんぬねっとさん、回答ありがとうございます。
記載不足すみません。 WEBページのデザイン画面でテキストボックスをツールボックスからドラッグしてはりつけると 当方の環境ではデフォルトで「TextBox1」というIDなのですが、通常は小文字なのでしょうか? インテリセンスを使用してコード記述しているので、ID自体は問題ないと思います。 記述するイベントもページロードやボタンクリックに変えてもビルドでエラーになってしまいます。 aspxのソースにも <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> と、定義は入ってます。 他のページで同様のことをすると、問題なく動作するのですが・・・ それから、関係あるかは分からないのですが、このページはマスターページ内のコンテンツページです。 ちなみにVS2003あたりだと、コントロールを貼り付けたときにcsファイル内にコードが自動生成されていた と思うのですが、同様の記述はVS2005ではどこにあるのでしょうか? | ||||||||||||||||
|
投稿日時: 2008-04-07 13:15
> 他のページで同様のことをすると、問題なく動作するのですが・・・
このことから、その特定のページだけが問題だ、ということがわかりますね。 でも、ためしにマスターページ内にテキストボックス貼り付けて動かしてみましたけど、そんなエラーはでませんね。 ちなみに、 string aa = this.TextBox1.Text; というコードから考えるとポストバック時に入力されたデータを取り出そうとしているんじゃないかと思いますが、そのとき何かやってませんか? | ||||||||||||||||
|
投稿日時: 2008-04-07 13:17
新規Webサイトプロジェクトを作成して確認しましたが、「TextBox1」でした。
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
Webサイトプロジェクトの場合、定義はビルド時に自動生成されるので通常は見えませんが、
こんな感じで意図的にビルドエラーを起こすことで見ることができます。 # もう少し真っ当な方法があるかもしれないけど私は知らないので… | ||||||||||||||||
|
投稿日時: 2008-04-07 13:44
> Webサイトプロジェクトの場合、定義はビルド時に自動生成されるので通常は見えませんが、
デバッグ実行をすると、 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files ここの下に自動生成されたプログラムが保存されます。 ファイル名等も自動生成になってしまうので探しにくいですが、デバッグを開始する前に一度全部消したうえで実行すると見つけやすいと思います。 #VS2008だと利用するフォルダが変わってますので注意してください。 | ||||||||||||||||
|
投稿日時: 2008-04-07 13:55
見つかりました。便乗ですがありがとうございます。 # デバッグ実行中に呼び出し履歴を見るとdll名がわかるので、 # それを手がかりにするとすぐ見つかるかも? |