- PR -

HtmlInputHiddenを動的に生成

投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-20 21:29
asp.net 2.0
VS 2005

いつも参考にさせていただいております。
現在、Webアプリを作成中なのですが、HtmlInputHiddenを動的に作成した場合の
Valueの取得方法でつまづいております。

まず、ループの中で動的にHtmlInputHiddenを生成しているのですが、

----------------------------------------------------------

HtmlInputHidden hih = new HtmlInputHidden();

hih.Attributes.Add("id", strId);
hih.Attributes.Add("name", strId);
hih.Attributes.Add("value", strValue);

----------------------------------------------------------

生成されたHTMLのname属性には、設定したはずのない値が入ってしまいます。

---------------------------------------------------------------------------
<input name="ctl00$ctl04" type="hidden" id="001" value="238" />
           ↑ここ!
---------------------------------------------------------------------------

最終的に、Request["nameの値"] でValue値を取得したいのです。
HtmlInputHiddenを使用するのは初めてなのですが(いつもは手でHiddenを書いております。)、Hiddenを動的に作成したいので使用しました。

このような使用方法がありなのかも含めて、
どなたかアドバイスいただけますでしょうか?
宜しくお願いいたします。





 







THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2007-02-20 22:18
HtmlInputHidden は Name を外部から指定することはできません。
名前と値を指定した hidden を作成したいならば、CrientScriptManager.RegisterHiddenField を使用してください。
サーバーコントロールにはなりませんが、Request プロパティから取得することを想定されているようなので、こちらで十分だと思います。

[ メッセージ編集済み 編集者: THREE-ONE 編集日時 2007-02-20 22:19 ]
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-02-21 00:39
マスタページやWebユーザーコントロールを使ってないなら、これでもいけそう。
コード:

HtmlInputHidden hih = new HtmlInputHidden(); 

hih.ID = strId; 
hih.Value = strValue;

みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-21 13:09
THREE-ONEさん、ぼのぼのさん、ありがとうございます!

RegisterHiddenField ですっかり解決できました。
2.0から追加されたものなんですね。
勉強不足でした。

本当に(いつも、いつも)ありがとうございました。

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-02-21 13:22
引用:

みつんさんの書き込み (2007-02-21 13:09) より:

RegisterHiddenField ですっかり解決できました。
2.0から追加されたものなんですね。
勉強不足でした。


あれれ? RegisterHiddenField 自体は 1.0 から存在していると思いま
すよ(私も使っていましたし)。
と思って調べてみたところ
の2種類あるみたいですね。そして Page.RegisterHiddenField は互換
性のために残されていると。

そういうことのようです。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-21 14:17
ぽぴ王子さん、ご指摘ありがとうございます!

コンパイルすると、思いっきり古い形式ですとなってました・・・。

CrientScriptManager.RegisterHiddenField

でスッキリ。
どのみち勉強不足には変わりなく・・・。

頑張ります・・・。

みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-21 16:06
引き続きで申し訳ないのですが・・・

Hidden以外のHTMLフィールドも動的に生成し、
Requestより値を取得したいのですが、
RegisterHiddenFieldのようなメソッドはあるのでしょうか?
現在検索中ですが、見つかりません。

又は、サーバー側でname属性ではなくid属性からvalue値を取得できると
いいのですが。


またも基本的質問でお恥ずかしいのですが、
ぜひアドバイスお願いいたします。




THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2007-02-21 23:36
こういう場合はスレッド分けたほうがいいのかな?

具体的には何でしょうか?
さすがに全てに対してお手軽メソッドがあるわけではありません。
汎用的に行うならば Literal コントロールを Add していくか、HtmlGenericControl を Add していくことになるかと思います。

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