- PR -

ReadOnly項目への書き込みについて

投稿者投稿内容
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-09-08 16:41
ASP標準コントロールでReadOnly設定がされている項目に対して
JavaScriptで値を設定し、ポストバック(ボタンクリックイベント等)すると
サーバーサイドにその値が渡されていない現象が発生しております。

JavaScriptに問題があるような気がしています。



このような事例をご存じないでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-08 17:00
項目がそもそもReadOnlyなら正しい動きのような気がします。
ポストバック時にデータを表示するのにViewStateの中の情報しか見ないんじゃないでしょうか。
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-09-08 18:07
ASP.NET 2.0

調べていたんですが、1つ解決策が見つかりました。

項目のプロパティで
 EnableViewState=False
 ReadOnly=True
にすると、サーバーサイドに値が渡されてきました。



ですが、EnableViewStateの意味からしてすこし納得できない面もあります。
誠に申し訳ありませんが、理由もしくは概念をご存じの方がいらっしゃいましたら
ご教授をお願いできますでしょうか?


[EnableViewState]と[ReadOnly]との関係など・・・
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-09-08 18:47
Request["TextBox1"]
みたいにしたら取れないですかね。

#ポストバック時にどういう条件のときはどこの情報を参照するって話。
#この話をしたスレッドがあったきがしたんですが、、見つからず。。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-09-08 18:55
> ですが、EnableViewStateの意味からしてすこし納得できない面もあります。

そうですか?
なんか納得できる気がします。
ただ、コントロールによっては強制的にViewStateを利用するものがあったと
思うので、そういうコントロールだとうまく動かないでしょうね。
ViewStateが何のためにあって、どのように使われているかをきちんと考えてみると
よいと思います。

#普通はReadOnlyにしてあるものをわざわざScriptで変更するってやらないでしょうから
 直接説明してるような資料はないでしょうね。

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-09-08 19:09
こんばんは。

私もどっとねっとふぁんさんと同様に、仕様的には納得できますね。
ReadOnly の項目と言うことは、基本的に(今回のように JavaScript などを
使わない限り)内容が変更されることはないはずなので、変更されていないもの
をわざわざ ViewState でサーバーに送る必要はないと考えられているのだと
思います。
というわけで、納得と言うか「おまえあったまいーな!」的な部分もあったり。
# この話は確かに見た気がするのですが、べるさん同様見つからず…

せっかく JavaScript で内容を変更しているので、ついでに Hidden な項目を
用意してそちらにも同じ内容を設定しておいて、その内容をサーバで取得する…
というのではダメでしょうか。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-09-08 19:15
すいません。
まだASP.NETに慣れていないもので深く理解できません。

>そうですか?
>なんか納得できる気がします。
EnableViewStateをFalseにすると永続的に保持していないんですよね?
だったらなぜReadOnlyをTrueするとサーバーサイドに値が渡されるのでしょうか?
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 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 ]

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