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


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

【質問】ASP.NETスレ Part6【雑談】



1 名前:nobodyさん mailto:sage [2009/09/01(火) 20:06:04 ID:???]
ASP.NETとは、マイクロソフトが提供するWeb アプリケーションと XML Web サービスを構築するための
Microsoft .NET Frameworkの一連のテクノロジの一つです。
技術の移り変わりの早い分野ですので、みんなで質問、相談しつつ、より理解を深めていきましょう。

●ASP.NET関連サイト
マイクロソフトASP.NETデベロッパーセンター
msdn.microsoft.com/ja-jp/asp.net/default.aspx
ASP.NETオフィシャル(英語)
www.asp.net/
VisualStudioホームページ
www.microsoft.com/japan/msdn/vstudio/
SQLServerホーム
www.microsoft.com/japan/sqlserver/2005/default.mspx
IISオフィシャル(英語)
www.iis.net/
ASP.NETにAJAX技術を取り入れるASP>NET AJAX(英語)
www.asp.net/ajax/
ASP.NETにMVCアーキテクチャを取り入れるASP.NET MVC(英語)
www.asp.net/mvc/
ASP.NETでのお役立ちの定番サイト
www.atmarkit.co.jp/channel/aspnet/aspnet.html

●前スレ
【質問】ASP.NETスレ Part5【議論】
pc11.2ch.net/test/read.cgi/php/1232671611/


79 名前:23 mailto:sage [2009/09/15(火) 07:39:06 ID:???]
>>76
うちでは Excel の仕様書から TableAdapter を自動生成していて、SelectList メソッド
にソート引数も指定できるようにしてるよ。内部的には ORDER BY に変換する。

>>77
やっかいなのは、SELECT するのは VIEW だけど更新もしたいケース。そんな時は
Update メソッドの中で、個々の TableAdapter を使い回す。それで対応できなければ
SQL 手書き。

>>78
WHERE の動的作成は頻出パターンなので、TableAdapter の自動生成時に作り込んで
いる。つまり、検索条件を引数にもらう SelectList メソッドの中で、引数が null じゃ
なければ WHERE に追加している。こうすると、画面側では検索条件をバインドする
だけで済む。

80 名前:nobodyさん mailto:sage [2009/09/15(火) 17:37:59 ID:???]
>>79
>TableAdapter を自動生成していて
>WHERE の動的作成は頻出パターンなので、TableAdapter の自動生成時に作り込んで

それでSQL手書きが2割以下になるのか。それなら納得
しかし、自動生成されたSQLを使うのはどうもあまり乗り気になれん
TableAdapterにしてもDataSourceにしても、SQLは完全にラップされて
アプリ側から見えなくしてるわけだし、その方向が正しいのはわかるんだけど

アプリ側でSQLもシームレスに使いたいっていうと、LINQな方向に行くのかねぇ
でもあれもSQLがそのまま通るわけじゃないしなぁ

81 名前:nobodyさん mailto:sage [2009/09/15(火) 19:25:00 ID:???]
>>79
>TableAdapter の自動生成時に作り込んでいる。
>つまり、検索条件を引数にもらう SelectList メソッドの中で、
>引数が null じゃなければ WHERE に追加している。
これどうやるの?
TableAdapterで、条件に従ってWHEREを追加とかできたっけ?

82 名前:nobodyさん mailto:sage [2009/09/15(火) 23:02:34 ID:???]
Yのつくとこがすきそうな手法だな・・

83 名前:nobodyさん mailto:sage [2009/09/15(火) 23:29:57 ID:???]
自動生成時に作り込む=クエリビルダでクエリを作る=細かいところは手書きでクエリ修正
とかじゃないだろうなw

84 名前:23 mailto:sage [2009/09/15(火) 23:52:09 ID:???]
>>81
Excel マクロでコード生成するんだからパターンさえ決まれば何でもできる。
Fill 系のメソッドで引数チェックして WHERE を組み立てるなんざどこでも
やってることでしょ。

85 名前:nobodyさん mailto:sage [2009/09/16(水) 01:27:00 ID:???]
>>84
そのFillなんちゃらの引数によって、クエリを作ったりできたっけ?
自分はできないと思っていたので、できるのなら教えてほしい。
環境はVS2005+SQLServer2005

86 名前:nobodyさん mailto:sage [2009/09/16(水) 01:32:33 ID:???]
途中で送信してしもた
環境はVS2005+SQLServer2005で、TableAdapterのFillなんちゃらのメソッドで、
引数に従ってWHEREを作成するなんて無理だと思ってた。
Fillなんちゃらがストアドを呼び出してて、
ストアド側で引数によってクエリのWHEREを組み立ててるならわかるけど、
それはクエリを書いてるから手書きクエリの削減じゃないしなぁ。


87 名前:nobodyさん mailto:sage [2009/09/16(水) 06:02:19 ID:???]
>>84
>Fill 系のメソッドで引数チェックして WHERE を組み立てるなんざどこでも
>やってることでしょ。
Fillなんちゃらって、TabelAdapterのか?
SQL指定したらメソッドの中身はウィザードで勝手に作られてるぞ
すくなくとも自分でコードは書いてないから、動的にSQL作ったりはしてない
これをいじるぐらいなら俺ならTableAdapterなんて使わん

>>86
実現させる方法をいろいろ考えたが
部分クラスか継承させたクラスでFillなんちゃらを全部自前で実装すればできそう
SelectList メソッド ってのもよくわからんし、自動生成されてるのは
TableAdapterだけじゃないのかもしれんが、そのへんは>84じゃないのでわからんw

たとえストアドで操作してても、そのストアドが自動生成されているなら
「手書き」クエリは減ってるとは言える

まあ、なんかしらの開発用フレームワークあるんじゃないかって感じだな




88 名前:23 mailto:sage [2009/09/16(水) 07:26:21 ID:???]
>>86,87
TableAdapter は Excel の仕様書からマクロで自動生成してるんだって。Fill とか
SelectList とか名前はどうでも良くて、要するに ObjectDataSource の Select
メソッドに選択できるメソッドの中で、引数をチェックして WHERE を組み立てる
ロジック込みで、コードを自動生成している。TableAdapter をウィザードで作って
いるわけではない。これを「手書き」と思うなら、まあどうぞ御自由に。

89 名前:155 mailto:sage [2009/09/16(水) 16:20:34 ID:???]
>>88
すまん、どの引数なのか、ウィザードとは何のことかさっぱりわからん。
よければ質問に答えてくれないか?

>ObjectDataSource の Selectメソッドに選択できるメソッドの中で、
>引数をチェックして WHERE を組み立てるロジック込みで、コードを自動生成している。

Q1 どの引数をチェックしてWHERE文を作成してるの?
1.ObjectDataSourceのSelectメソッドの引数
2.TableAdapterのFillなんちゃらメソッドの引数
3.その他のメソッドの引数(どのメソッド?)

Q2 WHERE文を組み立ててるのはどこ?
1.ObjectDataSourceのSelectメソッド
2.TableAdapterのFillなんちゃらメソッド
3.Excelのマクロ
4.その他(どこ?)

Q3 自動生成するクエリの範囲は?
1.すべてをExcelのマクロで作成
2.WHERE文以外をExcelのマクロで作成、WHERE文のみQ2のメソッドで、Q1の引数から作成
3.すべてをQ2のメソッドで、Q1の引数から作成
4.その他(どこ?)


90 名前:nobodyさん mailto:sage [2009/09/16(水) 16:21:32 ID:???]
失礼、名前は無関係
続き

>TableAdapter をウィザードで作っているわけではない。
Q4 TableAdapterそのものはどうやって作ってるの?
1.データセットデザイナ
2.その他(なに?)

Q5 作成したWHERE文から前のクエリとWHERE文はどこに登録してるの?
1.すべてのクエリをTableAdapterに登録
2.WHERE文から前をTableAdapterに登録、WHERE文はDataTable.Selectメソッドで登録
3.その他(どこ?)

Q6 クエリをどこに登録してるの?
1.拡張子.xsdのxmlファイルのに手書きで作成したクエリを追加
2.データセットデザイナのクエリ構成ウィザードを使って作成したクエリを登録
3.データセットデザイナのクエリ構成ウィザードからクエリビルダを使って作成したクエリを登録
4.その他(なに?)

91 名前:nobodyさん mailto:sage [2009/09/16(水) 16:35:02 ID:???]
データアクセス層のクラスを自動生成するって話はわかるんだが
その自動生成されてるものはTableAdapterといえるのだろうか
そもそもTableAdapterって何だって話になるんだが、MSDNによると
>TableAdapter は、DataAdapter の機能を向上させるためにデザイナで生成されるコンポーネントです
らしい。
当然TableAdapterと100%互換のあるクラスも作成可能なんだろうが
それを生成したからといってTableAdapterを自動生成っていうと誤解を招くとおもうな
ObjectDataSourceでの使用が前提なら、あえてTableAdapterと互換のあるものにする必要もないし

SQL手書き量が減ってる最大の要因はこのデータアクセス層クラスの自動生成のおかげで
けっして最新のASP.NETのおかげではないってのも誤解を招いた原因の一つだな

92 名前:nobodyさん mailto:sage [2009/09/16(水) 18:30:04 ID:???]
いや、既存のTableAdapterに、自前のクエリを何かしらの方法で登録してるんでしょ?
じゃないと話がつながらないし、
もしExcelのマクロとやらでクエリを書いてるから自動だってのなら、
これはツール(Excel)のおかげでASP.NETのおかげじゃないから
2割以下なんて結論に至るはずがない。

>45 名前: 23 [sage] 投稿日: 2009/09/09(水) 08:04:03 ID:???
>俺のところだと SQL 手書きが発生するのは全体の 2 割以下だな。それもこれも最新の
>ASP.NET が使えるおかげ。

DataSetデザイナでは、WHERE文を動的に発行することは不可能だから、
みんなどうやってるのかを聞きたいんだと思うのだが。

※DataSetで動的にWHERE文を作るのは不可能というと誤解を招くと思うが、
考えられる場合の数だけ引数の異なるFill〜メソッドを作れば可能だが、
これは半固定なのでこれは動的発行じゃないし、
ストアドプロシージャでも可能だけど、これも事実上、クエリは手書きとかわらんし、
DataTableのSelect使えばソートやフィルタリングはできるが、これもクエリの動的発行じゃない

93 名前:23 mailto:sage [2009/09/16(水) 21:41:11 ID:???]
>>89
Q1=2, Q2=2, Q3=1
>>90
Q4=Excel マクロ, Q5=TableAdapter の定数, Q6=Q5 と同じ

要するに、TableAdapter.cs 全体を Excel マクロで吐き出している。全部。WHERE
の動的生成もその中にある。種も仕掛けもあるよ。

>>91, 92
あーなるほど、>>45 の発言が混乱させてたのか。たしかに ASP.NET のおかげじゃ
ないね。手書き 2 割以下は ASP.NET のおかげではなく、Excel マクロのおかげ。
元レスは ASP.NET 1.1 の環境だったから、単純に FormView が 使える3.5(2.0 も)は
いいぜ、という程度のノリだった。すまんかった。

94 名前:nobodyさん mailto:sage [2009/09/16(水) 22:11:35 ID:???]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

でDataSourceと関係なく、FormViewのメリットってなに?
本来、ポトペタするコントロールに、フィールド名を登録するだけでバインドしてくれるところ?

95 名前:nobodyさん mailto:sage [2009/09/16(水) 22:50:54 ID:???]
なんと比べてのメリットって話もあるが、1.1と比べるなら
FormView(DetailsViewも)のメリットは、データソースの単一レコードにバインドでき
レコードのナビゲーションを操作する機能まで取り込まれているところがメリットかと
1.1で単一レコード表示させたら、レコード移動と画面の更新を全部自分でやらんとダメだからな

双方向バインドで自動更新なんておまけみたいなもんですよw


96 名前:23 mailto:sage [2009/09/16(水) 23:02:19 ID:???]
>>94
それもあるが、レイアウトを自由にカスママイズできるってのと、あとは登録処理が
FormView.InsertItem(false) で OK なところとか、Update の時に元々の入力値も
引数で一緒にもらえるところとかね。使ったことないなら使ってみたら?

>>95
ナビゲーションは逆に使ってないな。GridView との連動パターンしかない。
それと、双方向バインドで自動更新は不可欠だろ! これのおかげでどんだけ楽に
なってるか。

97 名前:nobodyさん mailto:sage [2009/09/16(水) 23:33:22 ID:???]
本当に日本語が不自由な奴だな

>レイアウトを自由にカスママイズできるってのと
レイアウトの自由度はポトペタ>>>>>>>>>>>>>>>>>>>>>>>>(越えられない壁)>FormViewだろ?
なんでレイアウトの自由度がポトペタに対してFormViewのほうがメリットあるんだ?
>あとは登録処理がFormView.InsertItem(false) で OK なところとか、
そんなのFormViewじゃなくても作り方次第
>Update の時に元々の入力値も引数で一緒にもらえるところとかね。
そんなのFormViewじゃなくても作り方次第

>それと、双方向バインドで自動更新は不可欠だろ! これのおかげでどんだけ楽になってるか。
多くの人はなってないんだよ。
おまえだけがエクセルでやってるから楽なの。

FormViewの利点を述べたいがために強弁してないか?
ASP.NETでクエリを書くのが2割になったとか、
レイアウトを自由にカスタマイズできるとか、
作り方次第でどうとでもなることをFormViewのメリットだと述べたりとか、
自分がやっている方法に固執してFormViewは便利だと述べたりとか。



98 名前:23 mailto:sage [2009/09/17(木) 00:05:04 ID:???]
>>97
作り方次第のところはそう言うならまあ頑張ってくれやって感じだが、双方向バインド
は Excel とは何の関係もないよ。

99 名前:95 mailto:sage [2009/09/17(木) 01:07:19 ID:???]
>>96
>レイアウトを自由にカスママイズできる
レイアウトのカスタマイズなんてFormView以外でもカスタマイズできる
これはFormViewのメリットでも何でもない

>ナビゲーションは逆に使ってないな。GridView との連動パターンしかない。
ナビゲーションの真意が伝わってない気がするな。FormViewでレコードを移動するって話じゃないぞ
レコードが移動されたときに新しいレコードにバインドし直すって話だ
いちど、FormViewつかわないで一覧からカレント行取得して詳細表示するコード書いてみ
このコードを自動でやってくれるのはかなり楽
データ更新は、SQL書くのなんてパターン決まってるから難しくはない
(それこそ自動生成で8割まかなえるほどに)
ただ、ビジネスロジックのチェックはそうはいかんし
単純な更新でないと使えないってのが感想だ

>>97
作り方でどうにでもなるのはその通りなんだが、問題はその作りこみが
FormViewで不要や楽に実現できるようになるかどうかだろ

レイアウトの件はまあ同意だが、FormViewにもポトペタすればある程度自由にできるぞ
登録処理は、単純な更新に限れば楽なる
UPDATEの元値は、DataSet使わないならかなり有効な機能だと思う

1.1には単一レコードを想定したバインドコントロールはないんで、
その点でFromViewにはメリットはあるから、使えるとこなら使えばいいかと
逆にデメリットは、自由度が下がるってことか
それでもある程度コードかけばカバーできる範囲だと思う


100 名前:nobodyさん mailto:sage [2009/09/17(木) 05:26:24 ID:???]
>>99
上のほうにナイスなたとえがあるけど、まさにその通りだと思ったな
FormViewは麺つゆ
ウドンやソバを作るのには便利だし美味しい
だけどいくら加工してもベースが麺つゆだから味が似てしまう(応用度が低い)し
麺つゆだから酢醤油や砂糖醤油にはならない。
ポトペタの醤油は手間はかかるがより多くの料理に利用できる。
こんなとこだろ

101 名前:nobodyさん mailto:sage [2009/09/17(木) 10:42:52 ID:???]
ウェップフォーム上の全チェックボックスのチェックをオフにしたいんですが、方法は
ありますでしょうか?repeaterの中にあってIDが固定じゃないのでべた書きすることが
出来ません。

102 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/09/17(木) 12:15:57 ID:???]
>>101
サーバ側でならRepeater.ItemDataBound イベントで処理する。
クライアント側でならJavaScriptで走査して処理する。

103 名前:nobodyさん mailto:sage [2009/09/17(木) 15:36:36 ID:???]
チェックボックスOFF程度でバインドし直すのもな。
俺ならサーバー側もforeachで回す。

104 名前:nobodyさん mailto:sage [2009/09/17(木) 16:26:00 ID:???]
なにをみてforeachで輪せばいいんですか?

105 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/09/17(木) 17:23:14 ID:???]
>>104
Repeaterの中をIDでFindControl

106 名前:nobodyさん mailto:sage [2009/09/17(木) 23:30:47 ID:???]
FindControlでもいいけど、コントロール名を
ハードコーディングしたくない俺は大体再帰で回す。

protected void button_Click(object sender, EventArgs e) {
    clear(this.Repeater1.Controls);
}

protected void clear(ControlCollection controlCollection) {
    foreach (Control control in controlCollection) {
        if (control.GetType().Equals(typeof(CheckBox))) {
            ((CheckBox)control).Checked = false;
        }
        if (control.HasControls()) {
            clear(control.Controls);
        }
    }
}

107 名前:nobodyさん mailto:sage [2009/09/18(金) 05:33:22 ID:???]
type='reset'なhtmlボタン配置したらどうだろうか

まあ俺なら、ページ出力時にクライアントサイドのスクリプトを動的に生成して出力しとく
チェックボックスオフにするためだけにポストバックさせたくない

今ならAjaxでやるのもありなのかもしれん。updatepanelだっけ?
その場合、Repeaterの中全部更新されるよね?



108 名前:nobodyさん mailto:sage [2009/09/18(金) 09:52:05 ID:???]
>>107
CheckBox以外のControlsもあったらどうすんの?

109 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/09/18(金) 10:44:13 ID:???]
>>107
JQueryとか使うと楽ちんだわな

110 名前:nobodyさん mailto:sage [2009/09/18(金) 15:09:35 ID:???]
>>108
その場合はその項目もリセットされるわな
それがまずいかどうかは>101の判断だろう
まあ、一番楽な方法としてリセットボタン考慮する価値はあるかと


111 名前:nobodyさん mailto:sage [2009/09/18(金) 15:15:51 ID:???]
>type='reset'なhtmlボタン
そういえばそんなのもあったな。すっかり忘れてたわ。

112 名前:nobodyさん mailto:sage [2009/09/18(金) 19:03:46 ID:???]
俺もClientスクリプトに一票

113 名前:nobodyさん [2009/09/19(土) 03:13:45 ID:ZjH1gzNN]
今のプロジェクトはASP.NETで作ってるんだが、どうしても必要なのでJavaScriptも死ぬほど書いてる。
自分で実装してて思うんだが、こんなの俺以外に絶対に保守出来ない。
つーか俺自身でも3か月後には多分保守出来ないw

難しいシステムを無理やりWebで作るのはほんとアホとしか思えないぜ。

114 名前:nobodyさん mailto:sage [2009/09/19(土) 04:39:22 ID:???]
うちは基本的にクライアントスクリプトの自前書きは禁止だなぁ@2.0環境
5行で書ける処理でもサーバー側でできるなら、そっちでやってもらってる。

>難しいシステムを無理やりWebで作るのはほんとアホとしか思えないぜ。
特に帳票とか帳票とか帳票とかな。まずデザインで死ねる。

更に、あたかも関数だらけのExcelのような動作を求められたりして死ねる。
入力項目50個超で1つ入力すると各項目を色々再計算/再描画とか言ってくるけど、
50個AutoPostback = trueな状態にするとブーブー言ってくるのは確定的に明らか。
こうなるとJavaScriptの出番になってしまい>>113みたいになって死ねる。
で、仕様変更があった時にJavaScript側で更に色々判定する必要がでてきてまた死ねる。

この経験からうちではクライアントスクリプト禁止令と、
「出来る出来ないで言えば出来ますが…は、ハッキリNoと言う」という
超基本的なことを徹底するようになった(´;ω;`)

115 名前:nobodyさん mailto:sage [2009/09/19(土) 15:13:10 ID:???]
教えて下さい。
コードビハインドで作られてるんですけど、3つのaspxが指すコードが全て同じものを指してる
んですが、これっていいんですか?まあ動けばOKという格言もありますが。

Form1.aspxとForm2.aspxとForm3.aspxが全部FormCom.aspx.csを指してます。
ちなみにFormX.aspxは3つとも微妙に違っていて、載ってるコントロールなんかも違います。
その辺はFindcontrolしてnullかどうかをちゃんとチェックしてるようなんですが。

でもまあ、通常は基底クラスに全部詰め込んで、あとは各画面に対応するクラスを継承するのが
正しい方法だと思うんですが。

116 名前:nobodyさん mailto:sage [2009/09/19(土) 17:07:25 ID:???]
>>115
>3つのaspxが指すコードが全て同じものを指してる
この発想はなかったわ。どう考えてもNGだろ。

117 名前:nobodyさん mailto:sage [2009/09/19(土) 19:01:05 ID:???]
メリットが思いつかないな



118 名前:nobodyさん mailto:sage [2009/09/19(土) 19:39:44 ID:???]
メリット
単純にコード記述量を減らせる。つまり試験工数も減るし、バグも減る。いい事尽くし。

3つのパターンで画面入力させるんだけど、画面上の項目が微妙に違う。(画面上の100項目の
うち10項目ほど)無論、3パターンを1画面でまかなって、区分によって項目のVisibleを制御
するのでもいいんだけど、いっそ3画面分のaspxを用意して、裏のcsは共通にしてしまおう、
と。デザイン指定が超絶シビアなので、Visibleで出したり隠したりとかしたくなかった。

基底クラスを継承、の場合でも、例えばボタンをクリックした場合のイベントはやっぱ3画面
それぞれ必要だよね。csが1つならとことんコード量を減らせる訳で。


まあ、「コード量が少ない」と「メンテしやすい」は等価じゃないけど。


119 名前:nobodyさん mailto:sage [2009/09/19(土) 19:40:53 ID:???]
>>116
すいません、NGの理由ってなんでしょうか?

120 名前:nobodyさん mailto:sage [2009/09/19(土) 20:00:26 ID:???]
自己フォロウ
開いてる画面によってはコントロールがあったり無かったりするので、不用意に

TextBox1.Text = "ほげ〜";

とか書けなくなる。全画面共通で必ず存在しているコントロールじゃない限り、一々FindControl
でコントロールを探さなきゃならない。

デメリットってこれぐらいだと思うンすけど。

121 名前:nobodyさん mailto:sage [2009/09/19(土) 21:09:11 ID:???]
余りに阿呆らし過ぎて説明する気もおきん。
コボラ相手にしてる気分だ。
いいと思うならやればいいんじゃないンすか?


122 名前:nobodyさん mailto:sage [2009/09/19(土) 21:16:18 ID:???]
>>121
ページが最終的にコンパイルされる仕組みを理解していれば、特に何の問題も無いわけだが?
理解出来ないなら黙ってた方が無知を晒さずに済むと思われ。

123 名前:nobodyさん mailto:sage [2009/09/19(土) 21:22:24 ID:???]
ここのページに個別にJavaScriptを設定したくてもできなかったりとか
コントロール名を変更しても反映されなかったりとか
不必要なイベントハンドラメソッドが増えるとか
インテリセンスが意味をなさなくなってバグの温床になるとか

124 名前:nobodyさん mailto:sage [2009/09/19(土) 21:32:36 ID:???]
それは、そういうデメリットもあるから、メリット・デメリットを天秤にかけて考えてね。
ってだけの話で、やってはいけない。という理由にはならない。
でもまあ、個人的には動けば正義だと思ってる

ちなみに「不必要なイベントハンドラメソッドが増えるとか」これだけ意味不明。



125 名前:nobodyさん mailto:sage [2009/09/19(土) 21:45:24 ID:???]
>ちなみに「不必要なイベントハンドラメソッドが増えるとか」これだけ意味不明。
ボタンの数だけイベントハンドラメソッドが増えるでしょうが。
各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。

>でもまあ、個人的には動けば正義だと思ってる
保守性が下がるからやってはいけない
他人が見てもわけわからないことになるからやってはいけない
重複させるとインスタンス時に余計なサーバ資源を消費するからやってはいけない。
インテリセンスの動作が無駄になりバグの温床になるからやってはいけない。
エラー発生時にハイライトされた行が、どのページのエラーなのか一別しか分かりにくいからやってはいけない。
ページ初期化時に表示ページとは関係無い初期化にリソースが消費されるのでやってはいけない。

>それは、そういうデメリットもあるから、メリット・デメリットを天秤にかけて考えてね。
>ってだけの話で、やってはいけない。という理由にはならない。
デメリットのほうが圧倒的に大きいから「やってはいけない」ということでしょ。
単に自分がやってることを否定されたくないから、難癖つけて認めさせたいようにしか見えない。

126 名前:nobodyさん mailto:sage [2009/09/19(土) 21:46:50 ID:???]
各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。

3枚の各ページに5個のボタンがあって、それぞれ別動作してたら15個のメソッドが存在することになる。


127 名前:nobodyさん mailto:sage [2009/09/19(土) 21:55:05 ID:???]
>126
普通、そういうケースではさすがにこんなヒネたコードは書かんだろ常考。
各画面にボタンが5個あって、ページに関係なく処理が同じ(前画面に戻るとか)

15個のメソッドが必要なところを5個で済む

ていう事を言いたいんジャマイカ?




128 名前:121 mailto:sage [2009/09/19(土) 22:11:27 ID:???]
>>122
アホかw本来別にすべきものをまとめて、
何がコンパイル時には一緒になるからだ。
App_Code以下が単一dllになるからって、
1クラスに全部まとめて書くか?書かないだろ?
なぜだ?責務が異なるものは、分けるのが当たり前だからだろ?

ある画面専用の処理が追加になったらどうするんだ?
他の画面からしたら、全く関係のない処理があるクラスを実装してることになるぞ。
リファクタリングを一回でもやったことがあれば、
それがどんなにアホなことか分かるよな。

月日が経って、そのクラスを実装するaspxが増えたらどうなる?
その度にif文やFindControl判定が増えていくのか?
なんとも素晴らしい設計だな。

仕様変更時には影響範囲が特定できず、
ある画面だけの修正なのに、処理が重なっているために
全画面の動作検証を行わねばならなくなったりしないか?

つか、高凝集密結合が良くないなんて、学生でも分かるだろ?

で、業務上、そういうことにはならないように気を使ってますとでも言うのなら、
先に述べたように、お好きにどうぞってこった。

129 名前:nobodyさん mailto:sage [2009/09/19(土) 22:26:02 ID:???]
多分元の質問者は「技術的に問題ありますか?」って事を聞きたいだけだと思われ。
そういう意味では「注意深く作るなら、別に問題はない」が回答。

ただし「将来的なメンテとか拡張とか修正とか考えると、3画面分まとめて1ソースに
すると身動き取れなくなったりしない?止めとけば?」ってのが周りのアドバイス。


130 名前:nobodyさん mailto:sage [2009/09/19(土) 23:06:31 ID:???]
>>127
>ちなみにFormX.aspxは3つとも微妙に違っていて、載ってるコントロールなんかも違います。
って言ってるぞ。


131 名前:nobodyさん mailto:sage [2009/09/20(日) 06:26:46 ID:???]
知識のない奴が一人前に提案して
不備を指摘されると逆ギレ
誤りを認めたくないから強弁するってガキの流行なんか?

132 名前:nobodyさん mailto:sage [2009/09/20(日) 14:01:24 ID:???]
>>130
で?

133 名前:nobodyさん mailto:sage [2009/09/20(日) 14:03:21 ID:???]
俺が認めない方法は許さない。
って馬鹿の粘着キモイ

>129 で出てる回答が全て。あとは自分で判断しろってことで終了。

134 名前:nobodyさん mailto:sage [2009/09/20(日) 15:36:43 ID:???]
>>133
技術的に問題があるかどうかなんて聞いてないよ
本人は技術的には問題ないことを理解した上で、メリットデメリットの話をしてるんだから。

技術的に問題無いことを理解している発言は>>122でしてる。(技術的に)何の問題もないと。
メリットとデメリットの話をしようとしているのは>>120を見れば分かる。デメリットうんたらかんたらと。

135 名前:nobodyさん mailto:sage [2009/09/20(日) 16:07:08 ID:???]
エスパー登場

136 名前:nobodyさん mailto:sage [2009/09/20(日) 16:48:16 ID:???]
なんか、ある事例を今の我が事のように感情移入してしまう人が居ますが、
その3画面での共用する方法はある意味、仕組みを熟知して使い倒してますなw
ネイティブアプリでの共有ライブラリ、DLLの様ように。
禁止事項ではないから、開発&保守が効率的であればそれも選択肢としてアリだと思う。

137 名前:nobodyさん mailto:sage [2009/09/20(日) 17:05:18 ID:???]
熟知しての実装なのか、無知ゆえの実装なのかはともかく(後者っぽいけど)、ケースに
よってはそういう手もあるのかと知ってちょっと感心した。

ビハインドコード共有!そういうのもあるのか

みたいなw
機能的に全く完全に差異がないけど、デザイン的にどうしようもない(ある仕入先と別の
仕入先で全く異なるデザインの画面)ケースなんかでは有効かも。



138 名前:nobodyさん mailto:sage [2009/09/20(日) 17:09:01 ID:???]
>なんか、ある事例を今の我が事のように感情移入してしまう人が居ますが、
4:主観で決め付ける

>ネイティブアプリでの共有ライブラリ、DLLの様ように。
6:一見関係ありそうで関係ない話を始める

>禁止事項ではないから、開発&保守が効率的であればそれも選択肢としてアリだと思う。
1:事実に対して仮定を持ち出す
10:ありえない解決策を図る
12:決着した話を経緯を無視して蒸し返す

というか自演乙

139 名前:nobodyさん mailto:sage [2009/09/20(日) 17:54:42 ID:???]
というか、aspxのページを新規生成すると、
ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
二つが作られるわけでしょ?

後者はVSがページ毎に自動生成するからaspxと1対1になってる
コードビハインドは、そのメンバ変数を参照してる(からインテリセンスで補完してくれる)わけで
いくらpageのインスタンスを所有していて、そこからFindControlで操作したいコントロールを見つけられるとしても
メンバ変数として宣言されてるコントロールを一切使用しないなんて、
asp.net以前にオブジェクト指向の設計として間違ってるような気がするのは俺だけ?

クラスで例えれば、
メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
メソッド内で操作したいコントロールのインスタンスは、すべてメソッドの引数として得て操作してるような感じ。
じゃあ、メンバ変数として所持してるインスタンスってなに?
その都度無駄にコントロールのインスタンスを生成するの?ってな感じになると思うんだ。

技術的に問題ないとか、問題なければやってもいいだろとか別次元の話だと思うんだけど。
動けば害はないし、禁止されてないからということで、1行ごとにThread.Sleepをしかけまくるみたいな。

140 名前:nobodyさん mailto:sage [2009/09/20(日) 17:58:03 ID:???]
君さ、もう「宗教上の理由で俺は断固として認めない」とでも言えば?('A`

141 名前:139 mailto:sage [2009/09/20(日) 18:05:49 ID:???]
なんだかわからんが、初の書き込みなんだが
というかで始めたのがまずかったか

142 名前:nobodyさん mailto:sage [2009/09/20(日) 18:13:57 ID:???]
すまんが

技術的な見地
思想的な見地
メンテや修正といった見地

で分けて議論?してくれ。じゃないと収束せんだろ。

>技術的に問題ないとか、問題なければやってもいいだろとか別次元の話だと思うんだけど。

じゃあ技術的には問題なし、思想的に不可。でいいじゃん。

143 名前:nobodyさん mailto:sage [2009/09/20(日) 18:38:22 ID:???]
>>142
いや、技術的に問題ないわけないじゃんね。
それ以前の話。
無駄なあえてわざと無駄な変数宣言をしてインスタンスを生成することは
動くけど技術以前の問題だろ?
1行ごとにSleepかませたり、ところどころ無駄な変数を宣言してインスタンスを生成したり
技術とか思想以前の問題

144 名前:nobodyさん mailto:sage [2009/09/20(日) 19:12:59 ID:???]
どうしても「俺が認めないものは認められない」つー馬鹿がいるな。
1行ごとにsleepかけようが、ASP.NET的には全然OK。

でもそういう実装が実際に許されるか否かは、そのアプリの目的に依存するんで可否を決
めようがない。

InProcで動いてる時にSessionに1GBのobjectを突っ込むのも、ASP.NET的には問題なし。
でもほんとにそんなことをしていいかどうかは求められてる仕様や環境次第。


技術以前の問題だっつーなら、技術以前の問題と技術的な問題に切り分けろよ。


145 名前:nobodyさん mailto:sage [2009/09/20(日) 19:58:30 ID:???]
>>144
>どうしても「俺が認めないものは認められない」つー馬鹿がいるな。
お前のことか?

>1行ごとにsleepかけようが、ASP.NET的には全然OK。
>InProcで動いてる時にSessionに1GBのobjectを突っ込むのも、ASP.NET的には問題なし。
アホかよw

>そのアプリの目的に依存するんで可否を決めようがない。
>ほんとにそんなことをしていいかどうかは求められてる仕様や環境次第。
ほとんど否だろ?もしくはしないほうが望ましいとされるだろうな。
自分に有利な条件を想像すんなよ。

「認められる仕様があるかもしれない」って都合の良い言い方だよな。
90-10ぐらいでほとんど認められない状況を、可否は判断できないとして
強引に50-50まで戻せるんだからw

なんで、そこまでしてむりくり正当化して自分の無知を認めたがらないのかね

146 名前:nobodyさん mailto:sage [2009/09/20(日) 20:04:08 ID:???]
>>144
その意味不明な改行の仕方といい自演バレバレですよ?

147 名前:nobodyさん mailto:sage [2009/09/20(日) 20:15:01 ID:???]
ID出ない弊害だな。



148 名前:nobodyさん mailto:sage [2009/09/20(日) 20:39:04 ID:???]
IDなんていくらでも変更できる
自演の中身は文章で判断するしかない
偉い人にはそれがわからんのですよ

149 名前:nobodyさん mailto:sage [2009/09/20(日) 21:09:34 ID:???]
ぶっかけ秋田。どっちでもいい。

150 名前:nobodyさん mailto:sage [2009/09/20(日) 21:19:00 ID:???]
>>148
こういうとき使うのは逆。

151 名前:nobodyさん mailto:sage [2009/09/20(日) 23:35:57 ID:???]
>>145
とりあえずお前が、技術的に問題ない という日本語の意味を理解してないのは理解した


152 名前:nobodyさん mailto:sage [2009/09/21(月) 00:39:40 ID:???]
ここまで全部俺の自演

153 名前:nobodyさん mailto:sage [2009/09/21(月) 11:40:40 ID:???]
>>151
とりあえずお前が、日本語を理解してないのは理解した

154 名前:nobodyさん mailto:sage [2009/09/21(月) 14:04:37 ID:???]
複数のaspxが同じcsを指すのって普通に使ってたんだが・・・
褒められた作りじゃないにしても、いまの所これが原因で動作がおかしくなったとかは無い。

155 名前:nobodyさん mailto:sage [2009/09/21(月) 14:16:06 ID:???]
>>154
>褒められた作りじゃないにしても、
いや、だからみんなこれを言ってるんだろ


156 名前:nobodyさん mailto:sage [2009/09/21(月) 15:20:59 ID:???]
なに?またループさせたいの?

褒められた作りじゃないが、有りといえば有り。

いや無しだろ。動く動かない以前の問題だ

最初に戻る

157 名前:nobodyさん mailto:sage [2009/09/21(月) 16:47:03 ID:???]
TableAdapterを使う場合にトランザクションかけられないのが
ものすごく不便に感じていたがReflection使えばよかったんだな。
weblogs.asp.net/ryanw/archive/2006/03/30/441529.aspx

ちょっと無理矢理な気もするが、自前で全部用意するよりはかなり楽になりそうだ。
今まで「TableAdapterつかえねー」の一念だけで、ろくに調べもしなかった自分に反省。
個人的にはこれで使わない理由はなくなった。ちょっと試してみよう。



158 名前:nobodyさん mailto:sage [2009/09/21(月) 18:47:39 ID:???]
必要ないインスタンスが生成されるのを「有り」とする人が多いのに驚いた

>>157
TransactionScope使えばかけられるんじゃないの?
blogs.msdn.com/nakama/archive/2008/10/23/transactionscope.aspx

リフレクションは便利だけど、遅いしコンパイルのチェックが入らないから美しくない
最低減で使う分にはいいけど、メソッドの呼出とかで使いまくってる奴をみると
C#という静的言語を一体なんだと思っているのかと小一時間チクビ舐めてやる

159 名前:nobodyさん mailto:sage [2009/09/21(月) 18:51:28 ID:???]
>>156
俺も無しに一票だな
今、テレビ見てたんだが、「第二音声では英語で実況しています」というテロップが日本語で入っていた

つまり、こういうことだ

日本語でアナウンスしてしまったから、英語で聞きたい人に伝わらないけど、
いちおう第二音声で実況しているから有り

いや無しだろ。英語で実況しているしていない以前の問題だ。

最初に戻る←いや戻らない戻らないwww 英語でテロップだせよww

160 名前:157 mailto:sage [2009/09/21(月) 18:52:15 ID:???]
>>158
TransactionScopeは、むかーしになんかの理由で
使えないなーって判断した記憶があるが忘れたな。
もう一回調べてみる。ありがとう。

161 名前:nobodyさん mailto:sage [2009/09/21(月) 19:04:48 ID:???]
MS-DTCが使えないとか、サーバの関係かな?
使えると便利なんだけどね。TeansactionScope。
結局なんだかんだいって、SQLサーバにすべてクエリ登録して、
アプリ側ではストアドだけ呼び出すのが正しいのかなという気がするよ。

162 名前:nobodyさん mailto:sage [2009/09/21(月) 22:11:19 ID:???]
駄目な相対化の例をこんなとこでも見るとは・・・

163 名前:nobodyさん mailto:sage [2009/09/22(火) 00:49:26 ID:???]
いつか誰かが突っ込むだろうと思ってずっと待ってんだけど、なんで誰も指摘しないの?
馬鹿っぷりを曝け出してる様をみてニヤニアしてんの?
つーわけで

 不 要 な イ ン ス タ ン ス っ て 何 ?


TextBox1,2,3があるページと、TextBox1,3,4があるページの両方が同じ分離コードをさしてる
として、片方のページを表示してるとTextBox1,2,3,4のインスタンスが出来るとでも思ってる
の?馬鹿なの?死ぬの?

164 名前:nobodyさん mailto:sage [2009/09/22(火) 11:06:33 ID:???]
>>163
ASP.NETの勉強をし直してからまたおいでね

165 名前:nobodyさん mailto:sage [2009/09/22(火) 12:44:19 ID:???]
>>139
> メンバ変数として宣言されてるコントロールを一切使用しないなんて、
> asp.net以前にオブジェクト指向の設計として間違ってるような気がするのは俺だけ?

逆だろ。
自動生成されたメンバ変数を使いつつ、コードを共有したいから、
共通の基底クラスを継承するのではなく、コードビハインドを共有するんだろ。

共通の基底クラスを継承する場合は、
基底クラスでは全てのコントロールをFindControlしなければならないが、
コードビハインドの共有なら、共通のコントロールに限り、メンバ変数が使える。

166 名前:nobodyさん mailto:sage [2009/09/22(火) 13:11:19 ID:???]
>>163
彼の主張する不要なインスタンスについては>>139に書いてある内容だと思う

>ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
>コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
>二つが作られるわけでしょ?
バージョンもWEBサイトかWEBアプリかも特定せずにメンバ変数を宣言するパーシャルクラスが自動生成されてるとか
パーシャルクラス(宣言のコード)なのにクラスが二つ作成されるとか

>コードビハインドは、そのメンバ変数を参照してる(からインテリセンスで補完してくれる)わけで
コードビハインドだと勝手にメンバ変数参照してるとか
メンバ変数参照してるからインテリセンスがきくとか

>メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか

もうね、>>164のアンカーは自分に向けとけとしか


167 名前:nobodyさん mailto:sage [2009/09/22(火) 14:17:50 ID:???]
不要なインスタンス云々を言ってる奴って、型付DataSetとか絶対認めない・使わないのかなw

コード内でDataColumnsを定義するのがメンドクセーって理由だけで型付DataSetを使うと、使わない
メソッドが腐るほど自動生成されるよね。それって無駄だから型付DataSetは使用禁止!ってル
ール?w





168 名前:nobodyさん mailto:sage [2009/09/22(火) 15:44:08 ID:???]
なんか急に関係ない話し始めたやつがいるぞw

169 名前:nobodyさん mailto:sage [2009/09/22(火) 16:40:24 ID:???]
そもそもイミフな意見を、煽らんがために
エスパー解釈するから余計面倒なことになってるな。

170 名前:nobodyさん mailto:sage [2009/09/22(火) 17:42:14 ID:???]
流れを読まずに質問してみる。
ASP.NETが生成するhtmlが30MB位になって、クライアントPCにダウンロード完了してから
実際にブラウザに表示されるまで30分ほどかかるんだけど、なんか上手い改善策ある?

サバーサイドの処理が重い訳じゃないので、どうしていいか分からなくて。

171 名前:nobodyさん mailto:sage [2009/09/22(火) 17:59:03 ID:???]
30分ワロタw
画像含まずにhtmlだけで30MB?
いったいどんなシステムなんだよ。

ページ分けるしかないでしょ
必要な時に、必要な分だけしぼりこんで表示。

172 名前:nobodyさん mailto:sage [2009/09/22(火) 19:32:16 ID:???]
>>165
>自動生成されたメンバ変数を使いつつ、コードを共有したいから、
>共通の基底クラスを継承するのではなく、コードビハインドを共有するんだろ。
逆だと思うのはコードの共有を目的とする観点からみてるから「逆」ってだけでしょ?
ページごとに、そのページが所有するコントロールの変数を
メンバ変数としてVisualStudioが宣言してるんだから、
VSつまりマイクロソフト的には1ページ1コードビハインド記述ファイルを前提ってことじゃないのってこと。

>パーシャルクラス(宣言のコード)なのにクラスが二つ作成されるとか
クラスが二つなんて書いてないじゃん。作文?

>必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか
だから必ず存在している場合は、メンバ変数として宣言されてるからそれを参照できるわけでしょ?
ない場合があるからFindControlしてるわけで。

>メンバ変数参照してるからインテリセンスがきくとか
インテリセンスが聞くのは、コントロールをメンバ変数に宣言してるパーシャルクラスを
VSが自動生成してるからじゃないの?違うなら俺の間違いだな。すまなかった。

>もうね、>>164のアンカーは自分に向けとけとしか
>>164は俺じゃないよ




173 名前:nobodyさん mailto:sage [2009/09/22(火) 19:35:00 ID:???]
やっぱそうだよなぁ。もはやページングしか残されてないよなぁ。
画像含まず、TextBoxとDropDownListとLabelとCheckBoxだけで構成されてるのに、htmlソース
で30MBとかいきます。ページングにすると更新のタイミングとかウザイんですよねえ。
俺オワタ

174 名前:nobodyさん mailto:sage [2009/09/22(火) 19:41:58 ID:???]
>>166
>>メソッド内では決して参照しないまったく関係無いコントロールのインスタンスをメンバ変数として保持し、
>必ず存在しているコントロールじゃない限り、一々FindControl(>120)って発言を無視してるとか
それから例えとして書いてるのに、それを本筋に当てはめて見当違いのレスするのは止めようよ。
「クラスで例えれば〜という感じになると思うんだ。」って書いてるじゃん。
そういうように書いてるぐらい「アホ」なやり方をしているっていうわけで、
そういうような仕組みでASP.NETが動いてるなんてかいちゃいないだろ?

>TextBox1,2,3があるページと、TextBox1,3,4があるページの両方が同じ分離コードをさしてる
>として、片方のページを表示してるとTextBox1,2,3,4のインスタンスが出来るとでも思ってる
>の?馬鹿なの?死ぬの?
これも同じ。だれも作られるなんて言ってないだろ?
メンバ変数で宣言されてるのにそれを参照しないコードの書き方がおかしいんじゃないのっていってんの。

つまり、おまえの批判はこういう的外れなことをいってるわけ。

酒井法子って覚醒剤やってたんだな・・・
これで逮捕されてもう芸能界じゃやっていけないだろ

ほんとだな万引きで捕まったぐらい恥ずかしいよな

お前バカじゃねぇ?酒井法子は万引きで捕まったんじゃねーよ。
ひょっとして万引きで捕まったとおもってんの?バカなの?死ぬの?

こんな感じ

175 名前:nobodyさん mailto:sage [2009/09/22(火) 19:59:09 ID:???]
シルバーウィーク進行中

176 名前:nobodyさん mailto:sage [2009/09/22(火) 20:18:47 ID:???]
>>172
クラス2個作られるのが俺の作文だっていうなら
>ロジックを記述するパーシャルクラス(ページなんちゃら.aspx.cs)と、
>コントロールなどのメンバ変数を宣言する.aspxが自動生成するパーシャルクラスの
>二つが作られるわけでしょ?
を解説してくれ

そして、
>必要ないインスタンスが生成されるのを「有り」とする人が多いのに驚いた
の必要ないインスタンスとは何か説明してくれ

177 名前:nobodyさん mailto:sage [2009/09/22(火) 20:22:23 ID:???]
>>173
こないだの1000だか3000だか5000だかの
大量のコントロールを埋め込もうとしてた人?



178 名前:nobodyさん mailto:sage [2009/09/22(火) 22:49:18 ID:???]
>>173
1000とか3000とか5000とかそんな桁じゃないんで違う人です。1桁違う。
5万コントロールとか10万コントロールとかそういう数なんで。

179 名前:nobodyさん mailto:sage [2009/09/22(火) 23:41:39 ID:???]
もはや御愁傷様としか…w






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

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

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