- PR -

ASP.NET モバイルWebフォームにhiddenフィールドを・・・

投稿者投稿内容
youhei
会議室デビュー日: 2007/01/06
投稿数: 17
投稿日時: 2008-05-16 23:43
いつもお世話になっております。

VS2005でモバイルのWebサイトを構築しております。
本題の件ですが、Form内にhiddenフィールドを作りたいのですが、
VS2005のツールボックスで、「モバイルWebフォーム」を見ても
該当するものが見当たらなかったような気がします。
モバイルWebフォームにhiddenコントロールって用意されているのでしょうか?

どうぞ宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-05-17 21:51
まず、表示する側が hidden を使えるのかどうか調べるのが先だと思います。
使えるのなら、HTML コントロールの TextBox、つまり input 要素になるものですけれども、それを置いて、type を hidden に変えればいいと思います。

「思います」です。そこのところよろしく。
youhei
会議室デビュー日: 2007/01/06
投稿数: 17
投稿日時: 2008-05-17 22:25
Jitta様
早速のアドバイスありがとうございます。

まずモバイル端末でhiddenは使えるのを前提でお願いいたします。
(こちらでの説明が欠けていました、申し訳ありません。)

次にHTMLコントロールにinput(hidden)はあります。
ただ、私が作りたい画面としては、Page_Load()で前画面からのパラメータを取得し、
そのパラメータの値をhidden項目にバインドする。といった動きです。
(これも私の説明が欠けていました、重々申し訳ありません)

なので、私としてはHTMLコントロールではなく、サーバコントロールの
hiddenが存在するのか、または代替の方法が知りたく思っております。

どうぞ宜しくお願い致します。


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-05-17 22:48
HTML コントロールの hidden を貼り付けて、それを右クリックすると、「サーバーコントロールとして使用」か、そんな名前のメニューがありませんか?

仕組みで言うと、id があって、server=run だったかな?そんな属性があり、ビハインド コードに id と同じ名前で型が対応するコントロールがあれば、それで使えます。
youhei
会議室デビュー日: 2007/01/06
投稿数: 17
投稿日時: 2008-05-18 00:49
Jitta様
お世話になっております。

教えていただきました「server=run」の属性を入れる事により
モバイルページでも正常に動作することが確認できました。

ただ、ひとつ不明点がありまして、データバインドの仕方です。

<INPUT type="hidden" ID="hidden1" server="run">

に対し、

hidden1.Text = "AAAAAAA"; または、hidden1.Value = "AAAAAAA";

とし、実行したところ「'hidden1' は現在のコンテキスト内に存在しません」
のエラーが発生しました。

server=runの場合、
データバインドの方法が通常の場合と異なるものなのでしょうか?

どうぞ宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-05-19 22:14
あれ?「server="run"」でした?「runat="server"」ではなく?

 で、そういうところも含めて、マニュアル(MSDN ライブラリ)は、読んでいますか?私は、夜しか投稿しませんし、家庭の事情で投稿できないときもあります。他の誰かが答えてくれる可能性もありますが、そういう不確定なものより、マニュアルぐらいは読む努力をすることを勧めます。
[quote]
HTML サーバー コントロール<microsoft.com> より:
既定では、ASP.NET ファイル内の HTML 要素はリテラル テキストとして処理されるため、サーバー側コードの HTML 要素を参照することはできません。これらの要素にプログラムでアクセスできるようにするには、runat="server" 属性を追加し、HTML 要素がサーバー コントロールとして処理されるように指定します。さらに、要素の id 属性を設定して、コントロールをプログラムで参照することもできます。属性を設定して、サーバー コントロール インスタンスに対してプロパティ引数およびイベントの関連付けを宣言します。
[/url]


引用:

youheiさんの書き込み (2008-05-18 00:49) より:
ただ、ひとつ不明点がありまして、データバインドの仕方です。

<INPUT type="hidden" ID="hidden1" server="run">

に対し、

hidden1.Text = "AAAAAAA"; または、hidden1.Value = "AAAAAAA";

とし、実行したところ「'hidden1' は現在のコンテキスト内に存在しません」
のエラーが発生しました。


 私たちは、すべてのエラー メッセージが表示されるタイミングや場合を把握しているわけではありません。
このメッセージは、実行時に「エラー」として表示されたのでしょうか。それとも「実行時例外」として表示されたのでしょうか。あるいは、「コンパイル エラー」なのでしょうか。
また、どの場合でも、エラー コード、あるいは例外の種類が表示されていると思います。それも、問題解決のための、重要な情報です。
重要な情報がなければ、問題を解決することはできません。


先に書いておきますが、謝る必要はありません。
損をする(している)のはあなたです。
私はむしろ、「こう考える人もいる」という情報をもらえて得をしています。
その点で、お礼を言わなければなりません。ありがとうございます。
今の時点では、あなただけが損をしています。
あなたも得をするように、どうすれば得になるか、考えてみてください。
youhei
会議室デビュー日: 2007/01/06
投稿数: 17
投稿日時: 2008-05-20 00:49
Jitta様
毎々お世話になっております。ご忠告も含めありがとうございました。

まずご紹介して頂いたMSDNの「HTMLサーバコントロール」も含め、
色々と調べておりまして、INPUT等のサーバーコントロールが
モバイルHTMLに対応してないのも調査済みです。

Jittaさんも回答数から察するに、かなりの経験者である事から、
アドバイスして頂いている情報が"確か"だと重い、色々と試してまいりました。

まずここで確認させていただきたいのがアドバイスしていただいている事が、
モバイルに対応しているのを前提した上でお答え頂けているのでしょうか?
(ちょっと言い方が生意気に感じてしまったら、お詫び申し上げます)

私が損がしているかどうか、Jittaさんに何故わかるのか疑問ですが、
もし、モバイルで対応していない前提でアドバイスを受けていたら、
たしかに私は損しているのかもしれませんね。(笑)

ちょっと余談が過ぎましたね。失礼しました。

ちなみに「'hidden1' は現在のコンテキスト内に存在しません」との
エラーはコンパイル時に発生したエラーです。

どうぞ、宜しくお願い致します。
ガリレオ2世
会議室デビュー日: 2008/05/20
投稿数: 2
投稿日時: 2008-05-20 01:11
Jittaさんが言うやり方じゃ無理ないの?

人が違えば考え方も違う。「特している」「損している」等、
論争している暇があったら、専用のデバイス作りましょう。

http://www.atmarkit.co.jp/fdotnet/aspnetmobile/aspnetmobile02/aspnetmobile02_05.html
http://msdn.microsoft.com/ja-jp/library/99tteheb(VS.80).aspx

頑張って!

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