- - PR -
ReadOnly項目への書き込みについて
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-09-08 16:41
ASP標準コントロールでReadOnly設定がされている項目に対して
JavaScriptで値を設定し、ポストバック(ボタンクリックイベント等)すると サーバーサイドにその値が渡されていない現象が発生しております。 JavaScriptに問題があるような気がしています。 このような事例をご存じないでしょうか? |
|
投稿日時: 2006-09-08 17:00
項目がそもそもReadOnlyなら正しい動きのような気がします。
ポストバック時にデータを表示するのにViewStateの中の情報しか見ないんじゃないでしょうか。 |
|
投稿日時: 2006-09-08 18:07
ASP.NET 2.0
調べていたんですが、1つ解決策が見つかりました。 項目のプロパティで EnableViewState=False ReadOnly=True にすると、サーバーサイドに値が渡されてきました。 ですが、EnableViewStateの意味からしてすこし納得できない面もあります。 誠に申し訳ありませんが、理由もしくは概念をご存じの方がいらっしゃいましたら ご教授をお願いできますでしょうか? [EnableViewState]と[ReadOnly]との関係など・・・ |
|
投稿日時: 2006-09-08 18:47
Request["TextBox1"]
みたいにしたら取れないですかね。 #ポストバック時にどういう条件のときはどこの情報を参照するって話。 #この話をしたスレッドがあったきがしたんですが、、見つからず。。 |
|
投稿日時: 2006-09-08 18:55
> ですが、EnableViewStateの意味からしてすこし納得できない面もあります。
そうですか? なんか納得できる気がします。 ただ、コントロールによっては強制的にViewStateを利用するものがあったと 思うので、そういうコントロールだとうまく動かないでしょうね。 ViewStateが何のためにあって、どのように使われているかをきちんと考えてみると よいと思います。 #普通はReadOnlyにしてあるものをわざわざScriptで変更するってやらないでしょうから 直接説明してるような資料はないでしょうね。 |
|
投稿日時: 2006-09-08 19:09
こんばんは。
私もどっとねっとふぁんさんと同様に、仕様的には納得できますね。 ReadOnly の項目と言うことは、基本的に(今回のように JavaScript などを 使わない限り)内容が変更されることはないはずなので、変更されていないもの をわざわざ ViewState でサーバーに送る必要はないと考えられているのだと 思います。 というわけで、納得と言うか「おまえあったまいーな!」的な部分もあったり。 # この話は確かに見た気がするのですが、べるさん同様見つからず… せっかく JavaScript で内容を変更しているので、ついでに Hidden な項目を 用意してそちらにも同じ内容を設定しておいて、その内容をサーバで取得する… というのではダメでしょうか。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |
|
投稿日時: 2006-09-08 19:15
すいません。
まだASP.NETに慣れていないもので深く理解できません。 >そうですか? >なんか納得できる気がします。 EnableViewStateをFalseにすると永続的に保持していないんですよね? だったらなぜReadOnlyをTrueするとサーバーサイドに値が渡されるのでしょうか? |
|
投稿日時: 2006-09-08 19:29
ASP.NET 2.0ではEnableViewStateの仕様が変わった?
http://blogs.wankuma.com/trapemiya/archive/2005/12/21/20123.aspx ReadOnly Controls do not post back properly when EnableViewState is false on Page http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102065 [PRB] EnableViewState が False に設定されていても、サーバー コントロールの状態が維持される(ASP.NET1.x) http://support.microsoft.com/default.aspx?scid=kb;ja;316813 うーん。。 私なら、Javascriptから値を受け取るには、隠しフィールドを使いますね。 [ メッセージ編集済み 編集者: todo 編集日時 2006-09-08 19:32 ] |