[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 10/17 05:12 / Filesize : 262 KB / Number-of Response : 797
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【質問】ASP.NETスレ Part5【議論】



1 名前:nobodyさん mailto:sage [2009/01/23(金) 09:46:51 ID:???]
●過去ログ
Part1 - 【質問】 ASP.NETスレ 【議論】
pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
pc8.2ch.net/test/read.cgi/php/1111480331/
【質問】ASP.NETスレ Part3【議論】
pc11.2ch.net/test/read.cgi/php/1160355849/
【質問】ASP.NETスレ Part4【議論】
pc11.2ch.net/test/read.cgi/php/1184683786/ (dat落ち?)

あんまり需要ないのかもしれませんが。。。

259 名前:nobodyさん mailto:sage [2009/05/13(水) 15:38:24 ID:???]
オレもこれやりたくてmono入れようとしてるけどSolarisだときっついな
まあ時間取れるまでWinサーバ使うか・・・

260 名前:nobodyさん [2009/05/13(水) 19:23:50 ID:EB+s12M/]
.NET Framework 3.0のPage.PreviousPage.FindControlについて教えてください。
トップページにある「発言ボックス」に入力した文字列を、表示ページにて表示したいのですが
テキストボックスを参照できなくて困っています。

マスターテンプレート(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

261 名前:nobodyさん [2009/05/13(水) 19:37:56 ID:EB+s12M/]
あ、できました。Bで。

262 名前:nobodyさん mailto:sage [2009/05/13(水) 19:45:55 ID:???]
PostBackは原則的に同一ページにするのが望ましいというのはわかってて、
あえてそれをやってるんだよね?

263 名前:nobodyさん mailto:sage [2009/05/13(水) 20:05:04 ID:???]
はぁ? 馬鹿じゃね。しねよ

264 名前:nobodyさん mailto:sage [2009/05/13(水) 20:21:45 ID:???]
そこらの本読むとPostbackUrlやServer.Transferの方が
Response.Redirectよりよく思えるんだよな。
いやまぁ実際メリットもあるけど。

265 名前:nobodyさん mailto:sage [2009/05/13(水) 22:50:11 ID:???]
ASP.NET MVCのほうが良いよ。

266 名前:nobodyさん mailto:sage [2009/05/13(水) 23:01:05 ID:???]
PostbackUrlが良いと言ってるやつは実践してみてないやつ。
ASP.NETの各種仕組みと相性が悪い。

Server.Transferはいいんだけど。URLが紛らわしくなるため敬遠されることが多い。


267 名前:nobodyさん mailto:sage [2009/05/13(水) 23:49:01 ID:???]
一つの画面に収まる機能は一つのページに記述して
異なるページに遷移するときはsessionだのcookieだの使用したほうがわかりやすいよね
asp.netの場合は1ページが1クラスだから、
クラス内の処理は、なるべくクラス内に責任もって記述してあげるのが
オブジェクト指向の観点からもわかりやすい気がする

各ページのクラスにCookieやSessionを扱う、
ICookieや、ISessionみたいなインターフェースを実装して、
Serializableなデータを保持するクラスを、
ページ間でやりとりできるようにしたら面白いのになと思ったり。



268 名前:nobodyさん mailto:sage [2009/05/14(木) 00:02:25 ID:???]
>>267
うちはページ継承してベースページを作成して
各機能ページはそれを継承して処理ってる

セッション管理とかログインしているいないとかのチェックはベースページ側でやってたり

インターフェイスもいいけどなんか使いどころが難しくってさ・・・
各ページで実装もセにゃいかんし
レベルが低いだけだとは思うが


269 名前:nobodyさん mailto:sage [2009/05/14(木) 00:15:25 ID:???]
やたらとインターフェイス使いたがるのもどうかしてる

270 名前:sage [2009/05/14(木) 11:53:07 ID: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("XXXXX/ERRGAMEN.aspx")
End If
End If



271 名前:nobodyさん mailto:sage [2009/05/14(木) 12:33:07 ID:???]
これかな?
エラーページにResponse.Redirectで遷移すると
設定したSessionが消えてしまうことがあるらしい
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10653&forum=7

ログやそれに似た用途ならglobal.asaxでもいいけど
認証ならフォルダごとにWeb.configでやったほうがいいかも

272 名前:270 mailto:sage [2009/05/14(木) 13:26:27 ID:???]
>>271
的確なアドバイスありがとうございます。
リダイレクトをtransferにすることで対処できました。

273 名前:nobodyさん mailto:sage [2009/05/14(木) 15:08:04 ID:???]
ここASP.NETだけど・・・


274 名前:nobodyさん mailto:sage [2009/05/14(木) 15:18:31 ID:???]
WebフォームにCalendarコントロールを貼って
・日付が変更される毎にカウンター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しただけで、それ以上増分されません。
何がいけないのでしょうか?

275 名前:nobodyさん mailto:sage [2009/05/14(木) 15:38:57 ID:???]
>>274
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がいいと思う

276 名前:nobodyさん mailto:sage [2009/05/14(木) 16:02:31 ID:???]
早速のレスありがとうございます。

>privateにすると、そのPageのメンバ変数になるので、
>ポストバックすると新しいPageのインスタンスが生成されるから、
>Pcountも新しいインスタンスの異なるメンバ変数扱いになって
>ポストバック前のデータを保持しない

ということですね、理解しました。

データの保持の違いとか、処理タイミングとか、実行順とかまだ整理できて無くて
そのために簡単なサンプルフォームを作って、カウンター表示を仕込んで試しているのですが
条件が変わると自分の狙った内容と実行結果が違ってたりして、・・・頑張ります!

277 名前:nobodyさん mailto:sage [2009/05/15(金) 19:06:29 ID:???]
Web開発の初期に、よくはまる道だ
がんばれ



278 名前:nobodyさん mailto:sage [2009/05/15(金) 21:06:17 ID:???]
JavaScriptで好き勝手やって、ViewStateの内容と
同期しなくなるとか昔はまったな。
挙句、不正な操作扱いされたりとか。

279 名前:nobodyさん mailto:sage [2009/05/15(金) 21:07:23 ID:???]
肝心なのはPublicかPrivateかじゃなくて
Sharedかそうじゃないかなんだが、大丈夫か

280 名前:nobodyさん mailto:sage [2009/05/16(土) 00:33:16 ID:???]
最近VB.NETでのレスをよく見かけるが、実業務のasp.netでもVBって多いのか?
言語の優劣を語る気はないがなんとなく気になったC#使い。

281 名前:nobodyさん mailto:sage [2009/05/16(土) 02:18:45 ID:???]
もともとのASPがVBだから、その流れでVBが多いんじゃない?
業務系もVB6の流れを汲むところは、今でもVB.NETが多いし

新しい言語に切り替えるって難しいよね
新しいテクノロジに理解があるところばかりじゃないし
過去の資産に縛られたりして


282 名前:nobodyさん mailto:sage [2009/05/16(土) 03:21:32 ID:???]
で旧VBで下手に培われてしまった悪しき習慣が.NETにも浸食するんだぜ。
VBの頃はネットが普及したせいで、ばかみたいなコードや習慣が広がりすぎた。
でその悪しき習慣をASP.NETとかにまでそのまま持ってくるもんだからとんでもないことに。


283 名前:nobodyさん mailto:sage [2009/05/16(土) 03:24:32 ID:???]
>>280
俺はC#だ
VBなんて見ただけで寒気がする

284 名前:nobodyさん mailto:sage [2009/05/16(土) 04:40:23 ID:???]
質問
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アプリケーション特有の脆弱性か?


285 名前:284 mailto:sage [2009/05/16(土) 12:15:07 ID:???]
ちなみに俺はリアルモンク属性だからはやく答えないと病院食を食うことになる

286 名前:nobodyさん mailto:sage [2009/05/16(土) 12:23:16 ID:???]
自分で調べろって感じだな

287 名前:284 mailto:sage [2009/05/16(土) 12:36:25 ID:???]
実は理解度クイズだよ。
正答率は自称詳しい人でも結構低かったりもする。

>>285誰だよおまえはw




288 名前:284 mailto:sage [2009/05/16(土) 12:38:15 ID:???]
とでも書けば、誰かが答えてくれるに違いない

289 名前:nobodyさん mailto:sage [2009/05/16(土) 12:44:04 ID:???]
いやいやクイズという限り、いつか出題者が回答するから問題ない

290 名前:nobodyさん mailto:sage [2009/05/16(土) 12:46:21 ID:???]
まあ言われてみれば誤解さえれそうだが、ほんとにクイズだよ。
俺がさっきちょっと考えてみただけの。
テストや宿題じゃなくて(っていうか中身見りゃわかるだろうけど、そういうレベルの問題じゃない)
正解は○がって数書こうと思ったけど、結構偏ってるな、疑うなら書くが。

問題のニュアンスはわりと詳しいつもりやつが理解してないことが多かったもの。
その前に内容がマニアックに偏ってるけどな。


291 名前:nobodyさん mailto:sage [2009/05/16(土) 12:58:07 ID:???]
こんな?

1× 2× 3? 4○ 5× 6? 7× 8○ 9○ 10?
11○ 12? 13×

?のとこはワカンネ
あと設定次第だったり、環境次第だったりするところがあるよね
ViewStateUserKeyが空文字の場合とか、
認証チケットは暗号化されてるけど認証に至るまでの経緯でhttpsでないと安全でない場合とか

292 名前:nobodyさん mailto:sage [2009/05/16(土) 13:04:00 ID:???]
いや8も×か 中身じゃなくてApplicationオブジェクトそのものは別インスタンスかな


293 名前:nobodyさん mailto:sage [2009/05/16(土) 13:08:00 ID:???]
正解は5個、かな?(ざっと確認してみたから間違ってたらすまんね)

環境しだいだったりするのは確かにあるが、
環境を特殊にどうこうした場合とかではなくて
一般的な標準的な状態と思ってもらっていい。
ViewStateUserKeyの場合はもちろん文字列をうまく設定すれば普通に利用できるか?という話だし、
認証チケットの扱いも特殊な状況は想定していない。
単にHTTPSじゃない経路で認証チケットを使うのは安全か?(認証チケット自体は暗号化されているが)。
ということ

Applicationオブジェクトは、そこに保存した変数というか、中身のことと思ってくれていいよ。
書き方悪かったな、いわゆるApplication変数はサーバ内で完全に一つと思っていいか?ということ。

294 名前:nobodyさん mailto:sage [2009/05/16(土) 15:53:09 ID:???]
いやいや気になるから正確な答えを頼むよw


295 名前:nobodyさん mailto:sage [2009/05/16(土) 16:34:45 ID:???]
2 4 9 10 が○
それ以外は×だよ


296 名前:nobodyさん mailto:sage [2009/05/17(日) 06:17:41 ID:???]
基本的にとか、望ましいとか言っちゃうとあいまいさがのこるから
問題文もう1回精査してから回答とともにアップしなおしてくれ

297 名前:nobodyさん mailto:sage [2009/05/17(日) 09:24:47 ID:???]
やだよめんどくさい。

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.×




298 名前:nobodyさん mailto:sage [2009/05/17(日) 11:05:51 ID:???]
>>295以上の情報が何もないじゃないか

解説ぐらい書けよ

299 名前:nobodyさん mailto:sage [2009/05/17(日) 12:05:47 ID:???]
自分で調べろよw

300 名前:nobodyさん mailto:sage [2009/05/17(日) 12:14:56 ID:???]
今携帯だから後で書くよ。
疑問のある番号あるなら疑問点を書いてね。


301 名前:nobodyさん mailto:sage [2009/05/17(日) 12:40:24 ID:???]
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える
インスタンス変数ってのは、スタティックじゃない変数ということかな?
Global.asaxにPublicな変数定義しとけば、グローバルに使えると思うんだが


302 名前:nobodyさん mailto:sage [2009/05/17(日) 13:12:04 ID:???]
そ、スタティックじゃないってこと。

303 名前:nobodyさん mailto:sage [2009/05/17(日) 13:16:28 ID:???]
単にグローバル変数ってのもやや曖昧だったね。
ここでは、アプリケーション全体で共有できるグローバル変数という意味。
まあだいたい一般的にこういう意味になるとは思うが。


304 名前:nobodyさん mailto:sage [2009/05/17(日) 16:45:45 ID:???]
クイズ
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アプリケーション特有の脆弱性である


305 名前:nobodyさん mailto:sage [2009/05/17(日) 16:49:05 ID:???]
回答
1.×Global.asaxは各リクエストに一つのインスタンスが割り当てられる(リクエスト完了後はプールされて再利用)
2.○1.より、リクエストに関する情報をインスタンス変数に保持することができる
3.×セッション準備時の同期化などの仕組みにより、スレッドが切り替わることがある
4.○もちろん使える
5.×1.より、インスタンス変数はアプリケーション全体で共有できない
6.×実はIsReusableは無視されている(常に再利用されない、まあこれは今の実装の話であってどうでもいい話ではある)
7.×そんなわけはない(むしろApplication変数はあまりお薦めではない、これにはいろいろ理由があるが)
8.×Webガーデンを使えば単一にはならない、またアプリケーションのリサイクルなどにより一時的に複数になり得る
9.○検証が有効であれば、少なくとも中身を改ざんされることはない(キーが漏れてるとかそういう状況はない前提)
10.○ワーカプロセスのリサイクルにより、一時的に複数同時に動作することがある
11.×盗聴されれば見事に不正アクセスできる(チケットの暗号化の意味はまた別にある)
12.×認証チケットは無効にはできない(ログアウトはクッキーを消すだけ)、とくに有効期限が長い場合これは要注意
13.×そんなわけはない


306 名前:nobodyさん mailto:sage [2009/05/17(日) 20:31:50 ID:???]
こういうのは問題の出し方が難しいな
主眼をどこに置くかで結果が違いそうなこともありそうだ

それはともかく知らないことがいくつかあったので勉強になったよ
今度実験してみようっと

307 名前:nobodyさん mailto:sage [2009/05/18(月) 18:33:02 ID:???]
.NETっでviewState OFF設定にしても、実行したら勝手にviewStateが入ってるんだけどなんでなんだろう?




308 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/05/18(月) 18:35:32 ID:???]
>>307
イベント識別するのにもViewState使ってたと思うからその分じゃね

309 名前:nobodyさん mailto:sage [2009/05/19(火) 01:35:59 ID:???]
でも.NETでできてるサイトで、ソース(htmlの)みてもviewStateが一切無いページとかあるんだよね。
つまり.NETのコントロール一切使わなければ出ないって事かな?
それだと.NET使う意味ねーな・・・

310 名前:nobodyさん mailto:sage [2009/05/19(火) 01:54:25 ID:???]
例えばどこ?

311 名前:nobodyさん mailto:sage [2009/05/19(火) 01:55:28 ID:???]
ああそうだMVCならでないかもね

312 名前:nobodyさん mailto:sage [2009/05/19(火) 21:35:47 ID:???]
なんか、viewstate="false"ってやってても
<asp:CheckBox id="CheckBox1" runat="server" />
がたくさんあると、viewstateがえらいことになる・・・・

なんとかしてOFFにしたいもんだ

313 名前:nobodyさん mailto:sage [2009/05/19(火) 22:02:16 ID:???]
実際に20個設置してみたけど、これがえらいこと??
PostBack前の状態を維持する仕組みをhiddenフィールドで
ベタに構築することを考えたら遙かにサイズは小さいと思うし、
セキュリティ的にも安心できるし、
十分に利便性はあると思うけど

それを考慮してもViewStateが嫌ならASP.NETを使わないか
旧ASPとして利用するしかないね

314 名前:nobodyさん mailto:sage [2009/05/19(火) 23:02:51 ID:???]
enableviewstate=falseの意味ねーじゃん
ばか?

315 名前:nobodyさん mailto:sage [2009/05/19(火) 23:11:27 ID:???]
20個設置してたら2kぐらいの文字列にならん?

316 名前:nobodyさん mailto:sage [2009/05/20(水) 00:04:28 ID:???]
<form runat="server">を使わなければviewstate撲滅できるよ
使えるコントロールが限られるけど

317 名前:nobodyさん mailto:sage [2009/05/20(水) 00:25:56 ID:???]
>>314
falseに設定したものはviewstate反映されてないだろ?



318 名前:nobodyさん mailto:sage [2009/05/20(水) 01:07:46 ID:???]
>>317
試してから言えよ

319 名前:nobodyさん mailto:sage [2009/05/20(水) 13:35:47 ID:???]
>>318
falseにしたコントロールやページに関してはViewStateに反映されないよ
ただASP.NETとして必要なぶんが反映されてるだけ

320 名前:nobodyさん mailto:sage [2009/05/20(水) 14:49:36 ID:???]
んだな

>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でやってるよ。

321 名前:nobodyさん mailto:sage [2009/05/20(水) 15:52:47 ID:???]
ViewStateだとドロップダウンリストの選択位置とか覚えておいてくれるから便利。
PHPとかで実装しようとすると大変だろうな

322 名前:nobodyさん mailto:sage [2009/05/20(水) 16:52:27 ID:???]
基地外ばっかり

323 名前:nobodyさん mailto:sage [2009/05/20(水) 17:51:12 ID:???]
>>321
大変ではないけどめんどくさいだけ
便利なのには違いない

つうか、必要でないViewStateだけ残して切ればいいじゃん
それすら嫌とか言うなら論外だろ

何かデータを保持るためのInputとかを別の形で実装してるようなもんじゃないか


324 名前:nobodyさん mailto:sage [2009/05/20(水) 18:01:54 ID:???]
ViewState切り詰め話はTechNet辺りでもよく出てるが、
大した問題にならないから無視しろか、
サーバーコントロールは極力使わなずResponse.writeしろの、
大体この二つに分かれてる感じだな。

一時期俺も削減に躍起になってたけど、そもそもASP.NETって時点で…
と気づいてからは余りこだわらなくなったな。

325 名前:nobodyさん mailto:sage [2009/05/20(水) 21:21:01 ID:???]
10KBのViewStateには超文句言うのに平気で数十KBの画像おきまくったりするページワロス


326 名前:nobodyさん mailto:sage [2009/05/21(木) 00:42:51 ID:???]
画像は受信拒否できるしなぁ
ViewStateは問答無用だろ。。

327 名前:nobodyさん mailto:sage [2009/05/21(木) 00:45:50 ID:???]
制作者からの視点で論じてたんじゃないのか?



328 名前:nobodyさん [2009/05/21(木) 01:36:07 ID:/8BtlCky]
ViewStateこつこつ削ってどれだけ結果に違いが出るんだよ。ほぼ意味ねーだろ。こういう所に拘るPGはマジ使えねぇ。


329 名前:nobodyさん mailto:sage [2009/05/21(木) 02:38:51 ID:???]
携帯みたいな従量課金の場合には影響があるので
気になるプログラマはいると思う

んで、ユーザ数が多いと、そういうコツコツが大事だったりするので、
なんでViewStateを完全に無くすことができないかを知りたいと思う好奇心は
プログラマに必要な資質だと思う

だけど、ViewStateの動作を詳しく把握してもいないのに
ViewStateの存在を制御できないから気持ち悪いとか、
こんなにViewStateがたくさん埋め込まれるのは理解できない
みたいなこと言ってるプログラマがいたら確かに使えない奴だと思う

330 名前:nobodyさん mailto:sage [2009/05/21(木) 04:14:36 ID:???]
>携帯みたいな従量課金の場合には影響があるので
>気になるプログラマはいると思う

普通自動でセッションに保存されるでしょ

331 名前:nobodyさん mailto:sage [2009/05/21(木) 07:40:13 ID:???]
例えばGoogleの検索結果なんかはそのままブックマークできるけど、
そういうのやろうとすると邪魔じゃね?viewstate。

332 名前:nobodyさん mailto:sage [2009/05/21(木) 08:20:41 ID:???]
意味がわからん。
ViewStateに対して間違った期待をしてないか。

333 名前:nobodyさん mailto:sage [2009/05/21(木) 13:12:01 ID:???]
ブックマークさせたいならGETだけでアクセス出来るようにしとくだけ。
ポストバックの結果をブックマークしたいなんてことしなければ。

334 名前:nobodyさん mailto:sage [2009/05/21(木) 14:32:49 ID:???]
当たり前のことだがASP.NET使ってるんだからそれに見合う環境は用意するべきだろ


335 名前:nobodyさん mailto:sage [2009/05/21(木) 14:46:42 ID:???]
みなさんSeasar.NETやEntlibなどのフレームワークは利用されていますか?
参考までにそのメリット・デメリットなどご意見いただけないでしょうか。

336 名前:nobodyさん mailto:sage [2009/05/21(木) 14:59:13 ID:???]
ENTLIB大袈裟
S2.NET合わない

337 名前:335 mailto:sage [2009/05/21(木) 15:29:27 ID:???]
>>336
そうですか。
紹介している記事もちらほら見かけるし、一見便利そうだったんで
使うのが一般的なのかとおもったのですが、そうでもないんですかね。



338 名前:nobodyさん mailto:sage [2009/05/21(木) 15:47:46 ID:???]
今何もないなら試してみるのもいいとは思うよ。
俺は使う気はないがもちろん使えることもあるだろう。


339 名前:nobodyさん mailto:sage [2009/05/21(木) 15:49:01 ID:???]
覚えれば便利そうだねぇ
.NETに取り入れてられればいいんだけど
標準でないものを使うのは気が引ける

といいつつJQuery使ってるけどw

340 名前:335 mailto:sage [2009/05/21(木) 17:29:21 ID:???]
今の仕事はClassicASPがほとんどなんです。
その片手間で.NET学習しながら次の案件を・・・とは考えているのですが、
なかなか時代の進歩に学習が追い付かなくて悩んでたんです。
ご意見ありがとうございました。参考にいたします。

341 名前:nobodyさん mailto:sage [2009/05/21(木) 18:47:50 ID:???]
念のために書いておくと、
ASPの片手間でASP.NETは無謀。


342 名前:nobodyさん mailto:sage [2009/05/21(木) 20:31:49 ID:???]
>>333
Googleの検索、トップページじゃなくて検索後のページで考えれば、
動作的にはポストバックでしょ(getだけど)。
その結果をブックマークしたい、って話よ。

343 名前:nobodyさん mailto:sage [2009/05/21(木) 20:56:33 ID:???]
>>342
何を言ってるんだ、お前は

344 名前:nobodyさん mailto:sage [2009/05/21(木) 21:10:26 ID:???]
>>343
例えばTextBoxのサーバコントロールを設置して、
「送信」ボタンをクリックすると、自動的にPOSTでポストバックされるということを
言いたいんじゃないかと想像

345 名前:nobodyさん mailto:sage [2009/05/21(木) 21:38:57 ID:???]
よくわからんが<form>をmethod="get"にするだけで、
ViewStateからなにやらクエリパラメータになるんだね
長いViewStateだと死にそうだけど

普通にクエリパラメータを作成して、Response.Redirectして
受け取り側では、Page.Request.QueryStringでGET内容を取得して
処理すれば手間(といってもphpとかなら当たり前の作業)だけど実現できそうだ
つーか、phpでは当たり前の実装が手間に感じるほど
PostBackは便利すぎってことだよね・・

この辺をうまく実装してくれるような仕組みってASP.NETにあったっけ?

346 名前:nobodyさん mailto:sage [2009/05/21(木) 21:59:07 ID:???]
だからそういう香具師はASP.NET MVCを使えと (ry

347 名前:nobodyさん mailto:sage [2009/05/21(木) 22:55:04 ID:???]
MVCの利点がイマイチよくわかんないのよね



348 名前:nobodyさん mailto:sage [2009/05/21(木) 23:14:05 ID:???]
ポストバックとかViewStateとかASP.NET特有の概念が嫌いで
古き良きWeb開発をしたい人にはとても良い。
しかしまあ、Webアプリ開発初心者には普通のASP.NETのが簡単だろうな。
Java人なんかにはMVCはグッとくるかもな。


349 名前:nobodyさん mailto:sage [2009/05/21(木) 23:17:16 ID:???]
>>342
クエリに検索キーがついたURLの文字列をブックマーク(記録)するだけで
ポストバックとかは関係無いと思うが。。

350 名前:nobodyさん mailto:sage [2009/05/23(土) 08:52:49 ID:???]
だから、ブックマークする為に
ブラウザのアドレス欄に「検索キーがついたURLの文字列」が現れて欲しい訳だけど、
form runat="server" method="post"
内のサーバコントロールに(ユーザーが)検索キーを入力した場合、
クエリ文字列は現れてくれない(URLは変化しない)し、
method="get"
にすれば現れるけど、もれなくviewstateもついてくるから邪魔。
っていう話。
>>344でだいたい合ってる。

351 名前:nobodyさん mailto:sage [2009/05/23(土) 09:36:30 ID:???]
まあそこは自前でやるなりするしかないでしょ。
ってのが最初から言われてることでしょ。


352 名前:nobodyさん mailto:sage [2009/05/23(土) 09:43:31 ID:???]
単純な設定変更とか、そういうレベルではできないね。
何にしても便利なやり方にはトレードオフはあるわな。

ASP.NET MVCみたいの使うとか(詳しく知らんからどんな感じにできるのか分からんけど)、
こういう用途の時だけは、ポストバックされた情報をもとに
クエリやパスに直してリダイレクトして結果表示ってのが簡単かな。
>>345みたいな方法だね。


353 名前:nobodyさん mailto:sage [2009/05/23(土) 13:26:19 ID:???]
そもそも論でポストバック結果をブックマークしたいってのはどういう状況?

354 名前:nobodyさん mailto:sage [2009/05/23(土) 13:27:16 ID:???]
>>352
よく考えたらNameValueCollentionをメンバに持つクラスを作って、
それにAddされて内容に従って、name=value&name1=value1みたいな出力をさせて、
URL作るだけだから、そんなに面倒じゃないね

受け取り側もHttpUtility.ParseQueryStringでやれば、
URLを自動的にNameValueCollectionに入れてくれる

ひょっとしたら、もっと便利なutilityクラスがあるかもしれないけど。

355 名前:nobodyさん mailto:sage [2009/05/23(土) 13:29:36 ID:???]
>>353
検索結果を表示させる一覧ページとかじゃない?
例えば業務なら担当が自分のページだけをブックマークしておいて、すぐに表示したいとか

356 名前:nobodyさん [2009/05/23(土) 13:46:59 ID:0dm/bxqY]
そこそこの規模の運用でサイト分けってどうされていますか?
現在、IIS上、1つのWebアプリの中に10個程フォルダ分けして運用していますが、
これら全てをチェックアウトしてくると、1ビルドに軽く10分程かかります。
したがって、毎回開発に必要な分を取捨選択して落としてきています。

以前、別の会社が作成したサイトを見せてもらった時は、
そもそもサイトはIIS上全て別Webアプリとして管理されていました。
しかし、そのためにApp_Code配下の共有ライブラリは
それぞれのサイトごとに保持するという形を取られていました。

通常、あるべき管理体系を考えると前者はあり得ないんでしょうが、
後者の冗長管理もどうなんだと、いう感じです。

357 名前:nobodyさん mailto:sage [2009/05/23(土) 16:56:23 ID:???]
>>355
そういう用途ならサーバ側に用意するのが普通では?
業務に関係無く、要は個人用にカスタマイズしたページだよな。。

検索結果だって毎回同じキーワードで検索する意味不明。

>>356
開発元(マイクロソフト)が発行している開発技術大全だかに
詳しく解説されてるよ。ASP.NETの応用編だったかな。
発行年月は古いが基本的なことが書かれていてためになる。
ViewStateなんかも巷の初心者向けには書かれてないことがあったりするからおすすめ。



358 名前:nobodyさん mailto:sage [2009/05/23(土) 17:02:05 ID:???]
>>357
いや、だからgetで指定されてると便利な場合だよ
googlemapのような緯度経度で指定してリンクを張りたいとか、
特定の商品のカテゴリ一覧だけを表示させたいとか。
一つのページ内で完結しているんでなく、
外部からのリンクを許可するような場合。

359 名前:nobodyさん mailto:sage [2009/05/23(土) 17:41:00 ID:???]
>>357
そのサーバ側の用意として、getで指定するページを作るわけだが
まあ、厳密にはポストバックされているページではないがな







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef