【質問】ASP.NETスレ Part5【議論】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/01/23(金) 09:46:51ID:???Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
【質問】ASP.NETスレ Part3【議論】
http://pc11.2ch.net/test/read.cgi/php/1160355849/
【質問】ASP.NETスレ Part4【議論】
http://pc11.2ch.net/test/read.cgi/php/1184683786/ (dat落ち?)
あんまり需要ないのかもしれませんが。。。
0232nobodyさん
2009/05/08(金) 01:55:36ID:???0233nobodyさん
2009/05/08(金) 12:01:02ID:???UserControl1.Findcontrol("Label1").text = "hage"
//キャスト省略
0234nobodyさん
2009/05/08(金) 18:05:34ID:???実際にはLabelオブジェクトをプロパティで公開するか
Label.Textを公開してあげればいいんじゃないかと思われる
0235231
2009/05/09(土) 00:26:29ID:???>>232-234
俺の勘違いでイベント発生してないだけでした
本当にバカでした
0236nobodyさん
2009/05/09(土) 09:51:49ID:???0237nobodyさん
2009/05/09(土) 13:10:10ID:???0238nobodyさん
2009/05/09(土) 23:37:56ID:???いままでprototypeだったけどjquery結構便利だな
なんか和んだ( ´ー`)フゥー...
VS2008SP1からだったか、jqueryは標準サポートだしな
0240nobodyさん
2009/05/12(火) 00:01:12ID:???IntelliSenseは無くてもいいから
0241163
2009/05/12(火) 01:28:31ID:???以下のイベントログが出力されており、
AppPoolが再起動している為、
セッション情報が消えてるぽいです。
クラッシュダンプで調べるしかないでしょうか?
他に調査方法があればご教授お願い致します。
・イベントログ
アプリケーション プール 'xxx' を提供しているプロセスは、
World Wide Web 発行サービスで致命的な通信エラーを検出しました。
イベントID 1011
0243nobodyさん
2009/05/12(火) 05:14:26ID:U71Iyk1VPDFは表形式で、グリッドの高さは可変で、行の途中にページの境目が来る
ようならその行の前に改ページしなくてはなりません。
サーバー側の処理でPDFファイル化したいです。
よろしくお願いします。
0244nobodyさん
2009/05/12(火) 06:58:22ID:???つまり、FileSystemObjectでテキストファイルを生成して、
後はPDFの仕様通り文字列を吐き出せばいいだけだよ。簡単でしょ。
マジレスすると、無理だから別途そういうパッケージソフトを買う。
ビジネスソフト板で帳票作成ソフトというと、まぁ数は限られるから調べてみるといい。
本質的な解決ではないけど、session維持したいなら
stateserverモードを使うとかどうよ?
0246nobodyさん
2009/05/12(火) 10:47:32ID:???ASP.NETならActiveReport一押しなんだけど
0247243
2009/05/12(火) 11:35:40ID:U71Iyk1VActiveReportって定型のフォーマットしかできないイメージなんですが、
グリッドの高さ変えたりページはみだす前に改行したりできますか?
0249nobodyさん
2009/05/12(火) 12:03:03ID:???CanGrowとかCanShrinkとか
まぁ・・・簡単な動的〜FORMATイベントとか駆使して複雑な動的ってのもできるっちゃぁ出来ると思うけど
たいがいの案件はこなせてきた
一回体験ばん入れて使ってみればどうかな?
0250249
2009/05/12(火) 12:03:47ID:???疲れてんのかな・・・
0251nobodyさん
2009/05/12(火) 13:08:49ID:???>グリッドの高さ変えたりページはみだす前に改行したりできますか?
設計が悪いだけじゃない?
改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕だと思うけど
おおよその要求には応えてくれたけど、できないこともあるかもしれない
例えば1行に記述できず2行に伸長してくれたとき、
それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
もしくはそのまま印刷してくれるを選択できるとか、フッターの表示の関係とか。
グリッドの高さについては、サンプルのCreating and Modifying Report Layouts at Run Time
にあるように実行時調整してしまえば、可能と思われる(英語版ですまん)
>The format event allows the properties of report sections and controls
>to be modified including height, visibility, and other visual properties.
//フォーマットイベントでは、レポートセクションやコントロールの高さや表示/非表示などを含む
//表示に関するプロパティを変更することができる
0252nobodyさん
2009/05/12(火) 13:13:33ID:???すまん上の「できない例」は想像の話。
グループヘッダーとか、レポートのフッターの改行とか伸長とか、改ページごとに表示するとかは
帳票によってクセがあったり得手不得手があるもんなので、試してみるしかないね。
0253nobodyさん
2009/05/12(火) 13:26:34ID:???ActiveReportsならASP.NETのも基本的に変わらないけど
>改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕
CanGrowプロパティだったかな? で伸縮させるように出来る
>それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
>もしくはそのまま印刷してくれるを選択できるとか
プロパティいじるだけでそうなるはず。
KeepTogetherかなんか忘れたけど
高さ操作は処理中にしようと思うと基本的にFormatイベントでのみしか推奨されていないけどいける
中途半端な知識なんで勘違い多いかも知れんが
0254nobodyさん
2009/05/13(水) 10:29:56ID:???ページ内のValidationSummaryがErrorMessageを拾ってくれない。
isValidやErrorMessageは正しくセットされていることは確認した。
カスタムコントロールのは拾ってくれないのかな?
0255nobodyさん
2009/05/13(水) 11:41:36ID:???それともユーザコントロール?
0256nobodyさん
2009/05/13(水) 13:01:18ID:???検証失敗時にTextが表示されるし、
ValidationGroupも検知して検証してくれている。
ただ、なぜかValidationSummaryに反映されない。
もちろんPage.IsValidもfalseになってる。
0257nobodyさん
2009/05/13(水) 14:31:56ID:???単にメンバに持ってるValidatorCollentionをsingletonで返してるだけなんだな
どうやってValidatorCollentionにValidator(BaseValidator)をaddしてるのかよくわからん
ValidatorCollentionの中身も単なるIEnumerableを実装したリストクラスに見えるし
0258sage
2009/05/13(水) 15:35:29ID:???今更ながらIIS+ASP.NET+SQLiteでゴニョゴニョしてみたけど、手軽で良いわこれ。
要IIS(monoっつー手もあるけど保留)な点さえクリア出来るなら、ちょっとしたページ作成なら
これでいいや。
0259nobodyさん
2009/05/13(水) 15:38:24ID:???まあ時間取れるまでWinサーバ使うか・・・
0260nobodyさん
2009/05/13(水) 19:23:50ID:EB+s12M/トップページにある「発言ボックス」に入力した文字列を、表示ページにて表示したいのですが
テキストボックスを参照できなくて困っています。
マスターテンプレート(Template.master)
┗トップページ (Default.aspx)
┗ユーザコントロール(Hatsugen.ascx ID=hatsu)
・テキストボックス コントロール(ID=moshi)
・ボタン コントロール(botan)
マスターテンプレート(Template.master)
┗表示ページ (showhatsugen.aspx)
という2つのページ(階層)があるのですが、トップページ側のボタンコントロールで
PostBackUrl="showhatsugen.aspx" としています。
showhatsugen.aspx側で、@ITの記事を参考にテキストボックス(moshi)を参照しているのですが
nullが返ってきてしまいます。
■試したこと
�@@ITの記事のまんま試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("moshi");
�Aユーザコントロールも参照しないとだめかもと試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("hatsu").FindControl("moshi");
�Bテンプレートもいれないとだめかもと思って試してみた。
TextBox a = (TextBox)Page.PreviousPage.Master.FindControl("hatsu").FindControl("moshi");
上記のような階層の場合、どのように値を参照できるか教えてください。
■参考にした@ITの記事
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/406asppostback1/asppostback1.html
0261nobodyさん
2009/05/13(水) 19:37:56ID:EB+s12M/0262nobodyさん
2009/05/13(水) 19:45:55ID:???あえてそれをやってるんだよね?
0263nobodyさん
2009/05/13(水) 20:05:04ID:???0264nobodyさん
2009/05/13(水) 20:21:45ID:???Response.Redirectよりよく思えるんだよな。
いやまぁ実際メリットもあるけど。
0265nobodyさん
2009/05/13(水) 22:50:11ID:???0266nobodyさん
2009/05/13(水) 23:01:05ID:???ASP.NETの各種仕組みと相性が悪い。
Server.Transferはいいんだけど。URLが紛らわしくなるため敬遠されることが多い。
0267nobodyさん
2009/05/13(水) 23:49:01ID:???異なるページに遷移するときはsessionだのcookieだの使用したほうがわかりやすいよね
asp.netの場合は1ページが1クラスだから、
クラス内の処理は、なるべくクラス内に責任もって記述してあげるのが
オブジェクト指向の観点からもわかりやすい気がする
各ページのクラスにCookieやSessionを扱う、
ICookieや、ISessionみたいなインターフェースを実装して、
Serializableなデータを保持するクラスを、
ページ間でやりとりできるようにしたら面白いのになと思ったり。
0268nobodyさん
2009/05/14(木) 00:02:25ID:???うちはページ継承してベースページを作成して
各機能ページはそれを継承して処理ってる
セッション管理とかログインしているいないとかのチェックはベースページ側でやってたり
インターフェイスもいいけどなんか使いどころが難しくってさ・・・
各ページで実装もセにゃいかんし
レベルが低いだけだとは思うが
0269nobodyさん
2009/05/14(木) 00:15:25ID:???0270sage
2009/05/14(木) 11:53:07ID:W6V8lEeJ現在vs2008、.NET FrameWork3.5にてASPのシステムを作成しています。
セッションが切れた場合の処理としてテストしているのですが
global.asaxでsession_startでセッションが切れた場合にエラー画面へ
リダイレクトする処理を入れているのですが
そこを通った後またsession_startに来てしまいリダイレクトしてくれません。
ログをみてもその関数が終わったらすぐにその関数というようになっています。
原因を知っている方お願いいたします。
If Me.Request.RawUrl.IndexOf("XXX.aspx") < 0 Then
If Session("UserId") = "" Then
Response.Redirect("http://XXXXX/ERRGAMEN.aspx")
End If
End If
0271nobodyさん
2009/05/14(木) 12:33:07ID:???エラーページにResponse.Redirectで遷移すると
設定したSessionが消えてしまうことがあるらしい
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10653&forum=7
ログやそれに似た用途ならglobal.asaxでもいいけど
認証ならフォルダごとにWeb.configでやったほうがいいかも
0273nobodyさん
2009/05/14(木) 15:08:04ID:???0274nobodyさん
2009/05/14(木) 15:18:31ID:???・日付が変更される毎にカウンターCcountを1増加させて表示(Label1)
・選択されたカレンダーの日付を表示(Label2)
・PageLoadされる毎にカウンターPcountを1増加させて表示(Label3)
させたい。
Partial Class _Default Inherits System.Web.UI.Page
Public Shared Pcount As Integer
Private Ccount As Integer
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Calendar1.SelectionChanged
Ccount = Ccount + 1
Label1.Text = Ccount.ToString 'Calendarの日付が変更された回数を表示
'カレンダーの日付を選択したら、カレンダーの値を表示する
Label2.Text = Calendar1.SelectedDate.ToShortDateString
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Pcount = Pcount + 1
Label3.Text = Pcount.ToString 'PageLoadされた回数を表示
End Sub
End Class
カウンターの定義で、上記のように Public Shared ではなく Private にすると
数値が初回+1しただけで、それ以上増分されません。
何がいけないのでしょうか?
0275nobodyさん
2009/05/14(木) 15:38:57ID:???public shared PcountはASP.NET全体で利用するアプリケーション変数(グローバル変数)的なものだったと思う
privateにすると、そのPageのメンバ変数になるので、ポストバックすると新しいPageのインスタンスが生成されるから、
Pcountも新しいインスタンスの異なるメンバ変数扱いになってポストバック前のデータを保持しない
そう考えるとpublic sharedは便利と思うかもしれないけど、
複数の人が同時にそのページを利用すると、使用した人の数だけPcount++されてしまって
思ったような動作はしないと思うよ
Aさんが日付選択→Pcount → 1
Bさんが日付選択→Pcount → 2
Aさんが日付選択→Pcount → 3
Aさん2回目の使用でPcount==2のはずなのに途中でBさん使ったのでなぜかPcount==3
なんでPcountの値をセッションやクッキー、ViewStateに保存して
Page_Loadで復元するような処理を書く必要がある
この場合同じページへのPostBackだしセキュリティにも大きな影響を与えなさそうなので、
ViewStateがいいと思う
0276nobodyさん
2009/05/14(木) 16:02:31ID:???>privateにすると、そのPageのメンバ変数になるので、
>ポストバックすると新しいPageのインスタンスが生成されるから、
>Pcountも新しいインスタンスの異なるメンバ変数扱いになって
>ポストバック前のデータを保持しない
ということですね、理解しました。
データの保持の違いとか、処理タイミングとか、実行順とかまだ整理できて無くて
そのために簡単なサンプルフォームを作って、カウンター表示を仕込んで試しているのですが
条件が変わると自分の狙った内容と実行結果が違ってたりして、・・・頑張ります!
0277nobodyさん
2009/05/15(金) 19:06:29ID:???がんばれ
0278nobodyさん
2009/05/15(金) 21:06:17ID:???同期しなくなるとか昔はまったな。
挙句、不正な操作扱いされたりとか。
0279nobodyさん
2009/05/15(金) 21:07:23ID:???Sharedかそうじゃないかなんだが、大丈夫か
0280nobodyさん
2009/05/16(土) 00:33:16ID:???言語の優劣を語る気はないがなんとなく気になったC#使い。
0281nobodyさん
2009/05/16(土) 02:18:45ID:???業務系もVB6の流れを汲むところは、今でもVB.NETが多いし
新しい言語に切り替えるって難しいよね
新しいテクノロジに理解があるところばかりじゃないし
過去の資産に縛られたりして
0282nobodyさん
2009/05/16(土) 03:21:32ID:???VBの頃はネットが普及したせいで、ばかみたいなコードや習慣が広がりすぎた。
でその悪しき習慣をASP.NETとかにまでそのまま持ってくるもんだからとんでもないことに。
0284nobodyさん
2009/05/16(土) 04:40:23ID:???1.Global.asaxはシングルトンか?
2.Global.asaxにインスタンス変数を定義して、HttpContextのようにリクエストに関する情報を保持するのは問題ないか?
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行されるか?
4.ViewStateUserKeyはCSRF対策に利用できるか?
5.Global.asaxにインスタンス変数を定義して、グローバル変数として使えるか?
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは基本的に再利用されるものと期待できるか?
7.グローバル変数が必要な時Applicationオブジェクトを定義するのは望ましい方法か?
8.サーバを分散していない場合、ApplicationオブジェクトはそのWebアプリケーション内で完全に一つとみなしてよいか?
9.ViewStateは基本的に改ざん防止策がほどこさえているので、ViewStateの値は基本的に信用してよいか?
10.Webガーデンを使用していないのに、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得るか?
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全か?
12.フォーム認証でログアウトすると、その認証チケットでは二度とアクセスできなくなるか?
13.SQLインジェクションは、Webアプリケーション特有の脆弱性か?
0285284
2009/05/16(土) 12:15:07ID:???0286nobodyさん
2009/05/16(土) 12:23:16ID:???0288284
2009/05/16(土) 12:38:15ID:???0289nobodyさん
2009/05/16(土) 12:44:04ID:???0290nobodyさん
2009/05/16(土) 12:46:21ID:???俺がさっきちょっと考えてみただけの。
テストや宿題じゃなくて(っていうか中身見りゃわかるだろうけど、そういうレベルの問題じゃない)
正解は○がって数書こうと思ったけど、結構偏ってるな、疑うなら書くが。
問題のニュアンスはわりと詳しいつもりやつが理解してないことが多かったもの。
その前に内容がマニアックに偏ってるけどな。
0291nobodyさん
2009/05/16(土) 12:58:07ID:???1× 2× 3? 4○ 5× 6? 7× 8○ 9○ 10?
11○ 12? 13×
?のとこはワカンネ
あと設定次第だったり、環境次第だったりするところがあるよね
ViewStateUserKeyが空文字の場合とか、
認証チケットは暗号化されてるけど認証に至るまでの経緯でhttpsでないと安全でない場合とか
0292nobodyさん
2009/05/16(土) 13:04:00ID:???0293nobodyさん
2009/05/16(土) 13:08:00ID:???環境しだいだったりするのは確かにあるが、
環境を特殊にどうこうした場合とかではなくて
一般的な標準的な状態と思ってもらっていい。
ViewStateUserKeyの場合はもちろん文字列をうまく設定すれば普通に利用できるか?という話だし、
認証チケットの扱いも特殊な状況は想定していない。
単にHTTPSじゃない経路で認証チケットを使うのは安全か?(認証チケット自体は暗号化されているが)。
ということ
Applicationオブジェクトは、そこに保存した変数というか、中身のことと思ってくれていいよ。
書き方悪かったな、いわゆるApplication変数はサーバ内で完全に一つと思っていいか?ということ。
0294nobodyさん
2009/05/16(土) 15:53:09ID:???0295nobodyさん
2009/05/16(土) 16:34:45ID:???それ以外は×だよ
0296nobodyさん
2009/05/17(日) 06:17:41ID:???問題文もう1回精査してから回答とともにアップしなおしてくれ
0297nobodyさん
2009/05/17(日) 09:24:47ID:???1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義するば、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、はCSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
1.×
2.○
3.×
4.○
5.×
6.×
7.×
8.×
9.○
10.○
11.×
12.×
13.×
0299nobodyさん
2009/05/17(日) 12:05:47ID:???0300nobodyさん
2009/05/17(日) 12:14:56ID:???疑問のある番号あるなら疑問点を書いてね。
0301nobodyさん
2009/05/17(日) 12:40:24ID:???インスタンス変数ってのは、スタティックじゃない変数ということかな?
Global.asaxにPublicな変数定義しとけば、グローバルに使えると思うんだが
0302nobodyさん
2009/05/17(日) 13:12:04ID:???0303nobodyさん
2009/05/17(日) 13:16:28ID:???ここでは、アプリケーション全体で共有できるグローバル変数という意味。
まあだいたい一般的にこういう意味になるとは思うが。
0304nobodyさん
2009/05/17(日) 16:45:45ID:???1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義すると、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、CSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、アプリケーション全体で共有できるグローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
0305nobodyさん
2009/05/17(日) 16:49:05ID:???1.×Global.asaxは各リクエストに一つのインスタンスが割り当てられる(リクエスト完了後はプールされて再利用)
2.○1.より、リクエストに関する情報をインスタンス変数に保持することができる
3.×セッション準備時の同期化などの仕組みにより、スレッドが切り替わることがある
4.○もちろん使える
5.×1.より、インスタンス変数はアプリケーション全体で共有できない
6.×実はIsReusableは無視されている(常に再利用されない、まあこれは今の実装の話であってどうでもいい話ではある)
7.×そんなわけはない(むしろApplication変数はあまりお薦めではない、これにはいろいろ理由があるが)
8.×Webガーデンを使えば単一にはならない、またアプリケーションのリサイクルなどにより一時的に複数になり得る
9.○検証が有効であれば、少なくとも中身を改ざんされることはない(キーが漏れてるとかそういう状況はない前提)
10.○ワーカプロセスのリサイクルにより、一時的に複数同時に動作することがある
11.×盗聴されれば見事に不正アクセスできる(チケットの暗号化の意味はまた別にある)
12.×認証チケットは無効にはできない(ログアウトはクッキーを消すだけ)、とくに有効期限が長い場合これは要注意
13.×そんなわけはない
0306nobodyさん
2009/05/17(日) 20:31:50ID:???主眼をどこに置くかで結果が違いそうなこともありそうだ
それはともかく知らないことがいくつかあったので勉強になったよ
今度実験してみようっと
0307nobodyさん
2009/05/18(月) 18:33:02ID:???イベント識別するのにもViewState使ってたと思うからその分じゃね
0309nobodyさん
2009/05/19(火) 01:35:59ID:???つまり.NETのコントロール一切使わなければ出ないって事かな?
それだと.NET使う意味ねーな・・・
0310nobodyさん
2009/05/19(火) 01:54:25ID:???0311nobodyさん
2009/05/19(火) 01:55:28ID:???0312nobodyさん
2009/05/19(火) 21:35:47ID:???<asp:CheckBox id="CheckBox1" runat="server" />
がたくさんあると、viewstateがえらいことになる・・・・
なんとかしてOFFにしたいもんだ
0313nobodyさん
2009/05/19(火) 22:02:16ID:???PostBack前の状態を維持する仕組みをhiddenフィールドで
ベタに構築することを考えたら遙かにサイズは小さいと思うし、
セキュリティ的にも安心できるし、
十分に利便性はあると思うけど
それを考慮してもViewStateが嫌ならASP.NETを使わないか
旧ASPとして利用するしかないね
0314nobodyさん
2009/05/19(火) 23:02:51ID:???ばか?
0315nobodyさん
2009/05/19(火) 23:11:27ID:???0316nobodyさん
2009/05/20(水) 00:04:28ID:???使えるコントロールが限られるけど
0319nobodyさん
2009/05/20(水) 13:35:47ID:???falseにしたコントロールやページに関してはViewStateに反映されないよ
ただASP.NETとして必要なぶんが反映されてるだけ
0320nobodyさん
2009/05/20(水) 14:49:36ID:???>ASP.NET によって使用されるページには、ポストバックを検出することを目的として、
>EnableViewState が false の場合でも読み込まれる非表示のビューステート フィールドが存在する場合があります。
ちゃんとMSDNにも書いてある。つまりASP.NETの仕様。
phpでも、ページからのpostであることを示すために、
hidden fieldで<input type="hidden" name="mode" value="postback">とかして、
$mode = $_POST["mode"];で受け取ってpostbackが入っていたらpostされたと認識して
初期処理したりするけど、それをViewStateを利用して実現してる。
これすら嫌ならもはやwebアプリは向いてないから止めたほうがいいと思う。
それかすべてsessionでやる。
モバイルASP.NETはこのViewStateの仕組みを一部のコントロールを除いて
ViewStateでなくてsessionでやってるよ。
0321nobodyさん
2009/05/20(水) 15:52:47ID:???PHPとかで実装しようとすると大変だろうな
0322nobodyさん
2009/05/20(水) 16:52:27ID:???0323nobodyさん
2009/05/20(水) 17:51:12ID:???大変ではないけどめんどくさいだけ
便利なのには違いない
つうか、必要でないViewStateだけ残して切ればいいじゃん
それすら嫌とか言うなら論外だろ
何かデータを保持るためのInputとかを別の形で実装してるようなもんじゃないか
0324nobodyさん
2009/05/20(水) 18:01:54ID:???大した問題にならないから無視しろか、
サーバーコントロールは極力使わなずResponse.writeしろの、
大体この二つに分かれてる感じだな。
一時期俺も削減に躍起になってたけど、そもそもASP.NETって時点で…
と気づいてからは余りこだわらなくなったな。
0325nobodyさん
2009/05/20(水) 21:21:01ID:???0326nobodyさん
2009/05/21(木) 00:42:51ID:???ViewStateは問答無用だろ。。
0327nobodyさん
2009/05/21(木) 00:45:50ID:???0328nobodyさん
2009/05/21(木) 01:36:07ID:/8BtlCky0329nobodyさん
2009/05/21(木) 02:38:51ID:???気になるプログラマはいると思う
んで、ユーザ数が多いと、そういうコツコツが大事だったりするので、
なんでViewStateを完全に無くすことができないかを知りたいと思う好奇心は
プログラマに必要な資質だと思う
だけど、ViewStateの動作を詳しく把握してもいないのに
ViewStateの存在を制御できないから気持ち悪いとか、
こんなにViewStateがたくさん埋め込まれるのは理解できない
みたいなこと言ってるプログラマがいたら確かに使えない奴だと思う
0330nobodyさん
2009/05/21(木) 04:14:36ID:???>気になるプログラマはいると思う
普通自動でセッションに保存されるでしょ
0331nobodyさん
2009/05/21(木) 07:40:13ID:???そういうのやろうとすると邪魔じゃね?viewstate。
■ このスレッドは過去ログ倉庫に格納されています