- PR -

HiddenにあるViewStateを表示しない方法について

投稿者投稿内容
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-01-24 11:57
はじめまして、Gunです。いつも拝見させていただき、大変参考になっております。

ASP.Netの開発において、
<input type="hidden" name="__VIEWSTATE" value="***">
と言うこの1行を表示させない方法、と言うのはあるのでしょうか。

Machine.Config、Web.Configそれぞれに、
enableViewState=falseとし、ページのコードにも、

Page.EnableViewState = False
Protected form1 As System.Web.UI.HtmlControls.HtmlForm
form1.EnableViewState = False

と記載しても表示されてしまいます。
これはどうしても表示されるものなのでしょうか。

どなたかご存知の方、いらっしゃいましたらご教授のほど、よろしくお願い申し上げます。
PoH
常連さん
会議室デビュー日: 2003/09/09
投稿数: 48
投稿日時: 2005-01-24 15:27
http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp03/entwebapp03_02.html

ここにViewStateデータをSessionに回避し、
サーバサイドでViewStateを保持する方法が
書かれています。参考程度に。。。。

もともとサーバーでの負荷を減らし
クライアント数増やす為にViewStateが存在するのであれば
Sessionを使えばいいとは思いますが
まぁSessionあんまり使いたくない
という気持ちはわかりますねー。

注意事項も書いてあるので
それもふまえて使うか決めたほうがいいと思います。
SessionでもいいならSession使う手もありますし。。。
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-01-24 17:54
ご返答、ありがとうございます。

Sessionに格納しても、Hidden属性としてページ上に残ってしまうのですね。
確かにSessionを使ってしまうのは要求定義上問題ありますし…。

もう少し実装方法を検討したいと思います。
どうもありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-01-24 22:24
> 確かにSessionを使ってしまうのは要求定義上問題あります
差し支えなければ、どのような問題ですか?
また、SessionもViewStateも使わない、それでどうやってWebアプリケーションを作成するのでしょう?大変興味深いので、是非お教えください。

_________________
Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-01-27 10:32
お返事遅れたこと、お詫び申し上げます。

ただいま、開発の標準化の策定等を行っておりまして、Sessionを使わないとなると携帯端末においては使えなかったり、Webサーバーをラウンドロビンのような環境にすると、Session管理のための仕組みを組み込まなければならなかったりします。

ViewStateは暗号化は出来るものの、クライアントがいやがったり、私も使うのに抵抗があります。あとイベントドリブンで書くのもメリットがあるとは思えません。
イベントドリブンで書くと、一度、自身にサブミットを行い、処理後、次のページへRedirectやExecuteを行い、IISにログが二重に吐き出されます。無駄なRequestやログが残ることによって、詳細なログ解析と、それをもとにSearch Engine Marketingを綿密に計画する、と言う要求は満たされません。

ASP.Netを使う理由として、豊富なクラス、DBキャッシュ、ロジックのクラス化等が容易な故、選定しました。テキストボックスの状態保持の方法についても、自社で作成するユーザーコントロールにて解決しようと考えております。

本来のASP.Netのあり方ではない、と承知の上、研究を行っている次第です。

以上です。試行錯誤に自分なりに考えてはみてるのですが、明らかに君間違ってるよ、などございましたら、貴重な意見ですゆえ、お聞かせくださいませ。それをもとに再度検討を重ねます。
どうぞよろしくお願い申し上げます。

[ メッセージ編集済み 編集者: Gun 編集日時 2005-01-27 10:35 ]
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-01-27 11:23
引用:

Gunさんの書き込み (2005-01-27 10:32) より:
お返事遅れたこと、お詫び申し上げます。

ただいま、開発の標準化の策定等を行っておりまして、Sessionを使わないとなると携帯端末においては使えなかったり、Webサーバーをラウンドロビンのような環境にすると、Session管理のための仕組みを組み込まなければならなかったりします。


意味が通らなかったのだけど「Sessionを使うとなると携帯端末においては使えなかったり」のTipoかな?Cokkieを利用できない携帯端末に対応するためにクッキーレス・モードが用意されている。Web.Configの設定を変更するだけで、携帯端末でも利用できる。
Sessionデータの保存場所をステートデータベースとかステートサービスにすれば、複数のWEBサーバーからSession情報を共有出来る。ラウンドロビンで利用しても問題は無いはず。
標準のSessionを利用すれば自分で仕組みを作成する必要などないはずだけど・・・。

引用:

ViewStateは暗号化は出来るものの、クライアントがいやがったり、私も使うのに抵抗があります。あとイベントドリブンで書くのもメリットがあるとは思えません。


これがASP.NETの最大の特徴です。これを否定するなら、ASP.NETを使わないほうが幸せになれると思います。

引用:

イベントドリブンで書くと、一度、自身にサブミットを行い、処理後、次のページへRedirectやExecuteを行い、IISにログが二重に吐き出されます。無駄なRequestやログが残ることによって、詳細なログ解析と、それをもとにSearch Engine Marketingを綿密に計画する、と言う要求は満たされません。


前段でログファイルの内容を解析して、無駄(と貴方が思っている)アクセスを除去するアプリケーションを作成するほうが現実的かと思います。

引用:

ASP.Netを使う理由として、豊富なクラス、DBキャッシュ、ロジックのクラス化等が容易な故、選定しました。テキストボックスの状態保持の方法についても、自社で作成するユーザーコントロールにて解決しようと考えております。


いったい何と比較した意見でしょうか?
豊富なクラス、DBキャッシュ(コネクションプールのこと?それともDataSet?)、ロジックのクラス化など・・・最近の高級言語なら対応していない事の方が珍しいんじゃ・・・。JavaやPerlやPHPだって上記の要望をクリアしていると思います。ASP.NETを選択する理由としては薄いでしょう。

_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-01-27 11:37
やるとすれば、こんな感じ?

「要求定義」を満たさないので、標準のPageクラスとWebコントロールは使用しない。
IHttpHandlerクラスからの発生で、独自のPageクラスを作る。
Webコントロールもそれぞれ独自に作る。
VS.NETで画面デザインが出来ないので独自のツールを作る。


Gun
常連さん
会議室デビュー日: 2005/01/24
投稿数: 23
投稿日時: 2005-01-27 11:50
>「要求定義」を満たさないので、標準のPageクラスとWebコントロールは使用しない。
>IHttpHandlerクラスからの発生で、独自のPageクラスを作る。
>Webコントロールもそれぞれ独自に作る。
>VS.NETで画面デザインが出来ないので独自のツールを作る。

はい、それに似たような形です。
独自ツールとまでは今のところ、考えていませんが、既存のクラスを継承し、
独自のPageクラスやWebコントロールでいくつかの問題を解決しようとしている次第です。

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