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落ち?) あんまり需要ないのかもしれませんが。。。
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で指定するページを作るわけだが まあ、厳密にはポストバックされているページではないがな
360 名前:nobodyさん mailto:sage [2009/05/23(土) 17:44:57 ID:???] >>356 運用って何を指しているんだ? チェックアウトやビルドは通常開発段階での話だが、 開発方法をして運用っていってるのか? あるべき管理体制ってのは、何の管理をする体制のこと? ソースの管理か?
361 名前:nobodyさん mailto:sage [2009/05/23(土) 18:55:09 ID:???] >>360 エスパーすると、共有のライブラリをプロジェクト(Webサイト)ごとに 管理しないといけないから面倒ってことでしょ それでも1サイトを1プロジェクトにして参照設定して、 発行すればライブラリも発行されるからそれの何が不便なのかよくわからないけど。 同じサーバに同じDLLが複数存在することを気持ち悪いと思うのなら 感覚としては理解できるけど、逆に、そのサイトがアクセス数が増大してしまって、 個別のサーバに移植したいという需要が発生した時には、 何も考えることなくそのWebサイトだけを他に移動させればいいんで、 その点では利便性は増してると思うけど。
362 名前:nobodyさん mailto:sage [2009/05/24(日) 08:23:28 ID:???] >>350 HttpRequest.QueryString()を使えばいいだけのような気がするのだが。 別にPostBackだけが唯一のパラメータ取得の方法じゃないし。
363 名前:nobodyさん mailto:sage [2009/05/24(日) 16:17:44 ID:???] お前ホントに頭悪いな
364 名前:nobodyさん mailto:sage [2009/05/25(月) 16:11:35 ID:???] というかさ、ViewStateが「強制」なのが気持ち悪いのであって アクセス数が多かったり、携帯だったりだと少しでも無駄は省きたいわけだ。 無駄にステートを保存してもらわなくていいし。 なんでページで「OFF」と指定しているのに組み込まれるのか。 というと、ASP.NETつかうなだとかいうやつがでてくるだろうけど、 これはMSも設計ミスと認めてるわけで、次.NETでは完全にOFFになるようだ。 結論からいうと3.5までではあきらめろ。
365 名前:nobodyさん mailto:sage [2009/05/25(月) 16:12:47 ID:???] ※ただしイケメンに限る
366 名前:nobodyさん mailto:sage [2009/05/25(月) 17:05:50 ID:???] ViewState無しで、POSTされた後であるかどうかをどうやって判断するんだろうな 改ざん無しで
367 名前:nobodyさん mailto:sage [2009/05/25(月) 17:07:56 ID:???] 携帯はモバイルASP.NET使わないほうが悪い
368 名前:sage mailto:sage [2009/05/25(月) 17:44:02 ID:???] キーが「日付」「SEQ」のテーブルがあって、それを表示させるウェップページを考えています。 表示させる際に、日付でグループ化したいんですが -------- yyyy/mm/01 ・01 xxxxxxx ・02 xxxxxxx yyyy/mm/02 ・01 yyyyyyy ・02 ccccccc -------- みたいな感じで。 .NET2.0だと、Repeaterの入れ子で実現するしかないでしょうか?.NET3.5だとListViewで お手軽に実現出来そうなんですが。
369 名前:nobodyさん mailto:sage [2009/05/25(月) 18:06:49 ID:???] テーブル構造がよく分からないが、 SQLテーブルに日付テーブルの日付をinner joinして 日付テーブルID、SEQテーブルID、日付、項目というテーブルを取得して、 日付でソートし、日付が異なるたびに実行時バインドで<tr><td>yyyy/MM/dd</td></tr> という行を表示してやればrepeaterを入れ子にしなくてもいいんでね?
370 名前:nobodyさん mailto:sage [2009/05/25(月) 18:10:14 ID:???] >>368 最終的にどんなHTMLにしたいか考えたら結構簡単だと思うんだけど・・・ どんな方法だって実現できると思うけど? あれだけど、極端な話テーブル使う方法もあるだろうし
371 名前:nobodyさん mailto:sage [2009/05/25(月) 20:34:29 ID:???] 日付、SEQでソートして、日付が変わったときだけ日付を表示すればいいんだろ 入れ子にする必要なんてないだろ 日付の部分だけ実行時バインドで、表示するかどうか判定するロジック組めばいいんじゃね
372 名前:nobodyさん mailto:sage [2009/05/25(月) 22:49:35 ID:???] >次.NETでは完全にOFFになるようだ。 詳しく