ほしゅ
ASPってXPHomeでも出来ますか? プロバイダの無料ホームページサーバーがASPに対応していないと転送してもうごかないんですか?
6 :
nobodyさん :2009/01/27(火) 08:51:33 ID:0yzijSJe
おいーい
7 :
nobodyさん :2009/01/27(火) 11:09:24 ID:tugN284u
教えてくれなくてもいい 教えてくれなくてもいいからこのスレに人がいるのかだけでも教えてくれ!!!
>>5 VWD Express入れれば、テストまではXP HOMEで大丈夫だよ。
2行目は、対応謳ってないところでは無理です。
おーできるんですか!本を買って始めてみようかと思います。thxです。 ずばりなんでこのスレは人がすくないんでしょうか?
念のために言っておくが、ASPとASP.NETは別物だぞ さらに、プロパイダがASPに対応といった場合、 ここで言っているASPやASP.NETとは全く別の、 アプリケーションサービスの提供という意味のときもある。
12 :
nobodyさん :2009/01/28(水) 18:38:10 ID:CAkFRKAi
自分のプロバイダ調べたんですが、MIMEタイプに何があれば可能なんですか? 検索してもASPはなかったんですが
13 :
nobodyさん :2009/01/28(水) 22:21:48 ID:sY0o9h6N
使えるプロバイダはでかでかとASP.NET対応とかうたってるはずだから なければ対応してない
大手で対応してるとこ皆無じゃないですか?どうやって活用すればいいんですかこれ アプリのヘルプとかをWEB形式にしてサーバーなくてもアプリ配布だけでaspxファイル見えるようにできるんですか?
企業が自社サイト立てるようなときに使う物であって、個人が 共用Webサーバーで使うようなもんじゃないよ、基本的に。 で、大手が対応するも何も、ついでに対応できるようなもんじゃないから、 ASP.NETのホスティング業者を探してください。
自分でサーバーたてれば?
まじダメなの・・・ VSに入ってるからやってみたかったんだけど持ち腐れくさい せめてアプリに埋め込みぐらい出来てほしかった。終わった・・・
だいたいCPUの能力が有り余ってる時代にサーバーで処理させるって方向自体がおかしい 各自のPCで処理させるほうがいいに決まってる
ASP.NETってのはサーバ環境だぞ アプリに埋め込むようなもんじゃないだろ お前が何をしたいのかわからんが、たぶんお前のやりたいことにASP.NETはイランと思われ
なんとなく、WPFやSilverlightやれば満足できるんじゃね?と思った。
Silverlightとかは技術力があっても絵心が無いとダメだなと思った。
そうか?Webシステムの管理画面とか、 多少見た目が悪くても問題無い所で活躍すると思うけどなぁ。 絵心が必要な部分はFLASHで充分。
いや、そういう場所はただのhtmlでよくね? 「システムの管理画面」をリッチクライアントっぽく作りこむ意味がわからん……
.NETスレで申し訳ないが、 VisualStudio2008でレガシーASP(.NETじゃないASP)の開発って可能ですか?
ASP.NET 開発サーバをコマンドから立ち上げて、IIS でいう「既定のコンテンツページを有効にする」 で index.aspx をデフォルトの拡張子にする、みたいなことはできますか? ASP.NET 開発サーバはそういうことはできないのかな。。
26 :
nobodyさん :2009/02/05(木) 11:15:34 ID:zvOyitUX
保守
Referを書き換えたいのですが、ググってみても方法が分かりません。 一般的な、「a.aspxページのボタンを押してb.aspxに遷移」の処理だと ブラウザに表示されているボタン押す ↓ a.aspxにPostBack ↓ a.aspx.csの `Button_Click` が呼ばれて ↓ そこに記述してあるresponse.Redirect("b.aspx")で ↓ b.aspxが表示 となると思いますが、b.aspxまで来た時のRefererを加工しておきたいんです。 HttpRequest.UrlReferrerは参照しか出来ないようですし。
referrerはクライアントでどうとでもできるから あまり当てにしたプログラムはつくらないほうがいいと思うんだな a.aspxから呼ばれたってのを調べたいときは sessionでも使ってチェックしたほうがいいんじゃないかな
VS2005にてWEBサービスを開発しております。 クライアントからの要求時に送られてきたSoapエンベロープ内の 文字列を丸ごと取得したいのですが、何か方法はないでしょうか?
hosyu
31 :
nobodyさん :2009/02/14(土) 16:33:05 ID:cqYeov/9
VB.NETで作成したWebカスタムコントロールを使用した場合、テーマの適用って出来ないんでしょうか?
なぜGridViewはdivで囲まれるのでしょうか。 div余計なんですが、どのように使用しろというのですか 除去することができれば教えて下さい。
34 :
nobodyさん :2009/02/17(火) 18:52:18 ID:TWz5D9vv
BulletedListで入れ子ってできますか?
35 :
nobodyさん :2009/02/17(火) 19:25:49 ID:VOp+dOz2
Windows XP + IISで質問です。 VS.net2008 で作った VB.net コンソールアプリを 実行ファイルに指定しているのですが、ビルドされた 実行ファイルをブラウザから参照すると、実行ファイル をダウンロードさせるような動きになってしまいます。 ところが、ビルド時に出力された、xxxx.vhost.exe を ブラウザで指定して見ると、実行結果はエラーになり ますが、サーバー側で実行しようとします。 この違いはどのようなことが原因と考えられるでしょか。 IISの設定では、EXEファイルを保存したディレクトリの 実行アクセス権を、「スクリプトおよび実行可能ファイル」 に設定しています。
出来るのであれば、自分も知りたいです。
37 :
nobodyさん :2009/02/17(火) 19:49:41 ID:VOp+dOz2
ええと、できましたw ごめん!お騒がせしたおわびに、こんな感じで。 ・環境 xpなので、IIS5.x系です。 VBは多分環境を問いません。対応するランタイムが IIS側に入っていることが条件です。 ・IISの設定 公開ディレクトリで、実行アクセス権を、 「スクリプトおよび実行可能ファイル」に設定します。 ・VB側の処理 HTTPヘッダを自前で書くこと。 コンソールアプリケーションとして作成すること。 get パラメータであれば、Mainの引数として簡単に パラメータを取得できる。こんな感じのコードで実行 ファイルを作成して動作確認するとわかりやすいかも。 module hogeModule sub main(byval sOptions as string) console.writeline("HTTP/1.0 100 OK") console.writeline("Content-type: text/html") console.writeline(vbnullstring) dim sStr as string for each sStr in sOption console.writeline(sStr) next console.writeline("おわり") end sub end module
38 :
nobodyさん :2009/02/17(火) 19:51:29 ID:VOp+dOz2
ちなみに、間違ってたのは、httpヘッダの部分で、 test/html とか書いてましたw IEで見たらダウンロードのダイアログに、xxx.exe と出ていたのでてっきり実行ファイルをDLしようと していたのかと思ったら、存在しない content-type ということで、IEがexeのファイル名のまま、CGIから 戻ってきた文字列をファイル保存しようとしていた だけでしたorz 文字の間違いには気をつけようぜ!w
保守
40 :
nobodyさん :2009/02/27(金) 18:17:47 ID:aU5MUsG5
AjaxControlToolkit-Framework3.5の不具合? ツールボックスより標準のasp TextBoxを配置。 そのTextBoxにMaskedEditExtenderをくっつけ、 CultureName:ja-JP Mask:99:99 MaskType:Time と設定。 MaskedEditValiDatorをくっつけ、 InvalidValueMessage:エラー と設定。 ここまでは問題なくエラーチェックをしてくれますが、 aspの標準のボタンを設置し、押すと正常でもエラー表示されます。 年月日は大丈夫だったので私の設定ミスでしょうか?
こっちにもasp.netがあったのか プログラム板にもあったから、そっちに常駐してたよ asp.netこんなに便利なのにユーザ少ないよな まったくかなしいぜ
42 :
nobodyさん :2009/02/28(土) 21:45:49 ID:3vV5LoA6
本屋で今日、aspの本を見ました。 一番分かりやすそうでした。 aspとjavaと.netとCはどれが一番人気ですか?
>>42 釣りかもしれないけど...
ASP.NETは、基本的には.NETだよ。
44 :
nobodyさん :2009/02/28(土) 22:39:55 ID:3vV5LoA6
>>43 「.NET」とは「.NET Framework」
と何かに記載されていました。
「.NET」にもいろいろ種類があるのでしょうか。
「VB.NET」「ASP.NET」とのちがいはなにでしょうか・・・。
ASP.NETは.NET FrameworkをつかったWEBサーバの環境 VB.NETは.NET Frameworkの言語のひとつ
46 :
nobodyさん :2009/02/28(土) 23:53:48 ID:3vV5LoA6
>>45 ありがとうございます。
ASP.NET内でVB.NET言語を使用するイメージですね。
あと・・・もう1つ質問なのですが・・・
.NET Framework をいろいろwebで調べましたが、概念がよく解りません。
webサーバー上に、別のwebサイトの検索結果やwebアプリケーションの実行結果を自動で引っ張ってきてくれる
便利な環境というイメージでしょうか。
なにを期待してるのか分からないが、そんな魔法みたいなことできるわけなかろう .net frameworkは便利な部品がいっぱい集まった巨大なライブラリみたいなもん。 たとえばファイルを開いて閉じるのにC言語だと10行かかなくちゃいけないところを 5行で済む感じみたいな これらを使うとお前さんがやりたい「別のwebサイトの検索結果やwebアプリケーションの実行結果を自動で引っ張ってきてくれる」 みたいなことがPHPやパールでコーディングするよりは楽に出来ますよってだけ。
そうか、やりたいのはマッシュアップか。
49 :
nobodyさん :2009/03/01(日) 10:42:16 ID:rplbU7vt
イメージがわいてきました。 ありがとうございました。 企業HPでgoogleマップを展開してくれるみたいなものがマシュアップというのですね。 高度な技術ですね。
50 :
nobodyさん :2009/03/02(月) 22:40:22 ID:TS5QNvIN
ちょいと質問 検索ページ→詳細ページ みたいに主キーをSessionで詳細ページに渡して詳細表示させるような場合、 主キーを格納してるセッションはどこで破棄してる? 戻るボタンで戻った時や、リロードされた場合に備えて自動破棄(なければ切れました表示)が普通かな? また、@検索ページ→詳細ページ→A検索ページ みたいに元のページに戻る時、@と同じ検索条件の一覧をAでも表示させておきたい場合は、 やはり@の検索条件をSessionに保存しといて、Aで再現するのが普通? 場合によっては、検索条件をクリアしたいときもあると思うから、そんなときはSessionクリアすればいいんだろうけど、 なんか力業で強引な気がして、もっとスマートな方法ってないのかな?
>>50 >リロードされた場合に備えて自動破棄
自動廃棄ってのはどういう事を言ってるの?
セッションは自分で廃棄しなければ、通常はタイムアウトで廃棄されるだけだと思うが
渡したい情報の量とかにもよるだろうが、俺ならクエリ文字列として受け渡しするな
>>51 自動破棄というのは、仰るとおりタイムアウトで破棄されるってこと。
書き方が紛らわしかったね。すまん。
クエリ文字列ということは、遷移する間、条件となるデータをhiddenfieldなり、
viewstateなりで持ち続けるってことだよね。その方法かセッションしかないよねぇ。
うーん。
クエリ文字列はQueryStringプロパティということで GETパラメータを想定してると思われます。
画面遷移のパラメータを安易にSessionに持つと、ブラウザの2窓できないクソアプリになるのでやめてくれ
正直、getやpostで値を持ち続けるのは面倒臭いw
セキュリティとの兼ね合いだな
57 :
nobodyさん :2009/03/11(水) 19:26:02 ID:cFXXjK9z
たとえば一つの表で列1に対する集計、列2に対する集計など 複数の結果を一つのページに表示する場合、 それぞれに対してSqlDataSourceを作るのが普通ですか? それとも自力でごりごりコードファイルにSQLを書いていくものでしょうか? またはもっと素敵な方法ありますか?
おれも疑問 @検索ページ→詳細ページ→A検索ページ こういうとき、 A検索ページへの検索条件引渡しは、GETパラメータ(QueryString)で渡すとして、 詳細ページに移動した時点での@の検索条件はどこに保管しとくのがいいのやら。 sessionに持つと、2窓同時操作ができないのよね・・・
>>58 ふつうにクエリ文字列として渡すので何か問題が?
詳細ページと検索ページ2に同じパラメータ渡すだけだろう
そういう場合、GETでクエリストリングに検索条件を列挙するのが普通だね。ウィンドウをもう一枚開きたいとか、ブラウザの戻るボタンとか。もっと言うと、アクセスログ解析とか。様々な点でGETの方がいい。
>>59-60 詳細ページでもGETパラメーターか
なるほど
詳細ページでは検索条件を直接使わないから、
詳細ページにもGETパラメーター渡すっていう考えに及ばなかった
すっきりしたよ
ありがとう
>>57 自分の場合は、ほとんどC#2.0のRepeaterにDataSetをDataBindしているので、
よほどのことがない限り、自力で合計して自力で合計値を表示させてる。
SQLで集計行を儲けるクエリがあったと思うよ
>>58 >sessionに持つと、2窓同時操作ができないのよね・・・
セッションキーだけをGETやPOSTで渡すという方法もあるよ
検索時に検索ボタンのクリックで、検索条件を納めた情報をユニークなキーでセッションに保存して、
ユニークなキーをGETやPOSTで持ち回りし、検索ページ表示時にユニークキーから
保存したセッションから検索条件を取得して再現するとか。
64 :
nobodyさん :2009/03/17(火) 13:27:16 ID:lh6o9g9J
お手数ですが何方かご存知のの方が おりましたら教えて下さい。 SPREADにて作成したCELLに数字(例:01)を入力し 実行時にブレイクポイントを張って 入力した数値を見てみると 「01」ではなく「1」としてデータが格納されております。 これはSPREADの仕様なのか CELL作成時に、書式設定可能なのか 教えて頂けますでしょうか。
65 :
64 :2009/03/17(火) 13:28:09 ID:lh6o9g9J
ちなみに言語は VBです。
>>64 SPREADってグレープシティのコンポーネント?
よくわからないけど、Excelと同じなら、Excelでも入力した文字が数値に変換可能なら、
自動的に数値に変換して表示したりするので、たぶん仕様だと思う
文字列として表示したいのなら、そのセルまたは列の属性を決めるプロパティがないかな?
たとえば日付型、文字型、数値型とか。
セルを文字列型にしたひな形作って読み込ませりゃいいんじゃね?
保守
Webサービスの参照を追加する場合、VSのウィザードからやるのが一般的のようですが、 これをプログラムソースのみで行うことは可能でしょうか? 可能であれば方法も教えて頂けませんでしょうか?
プログラムソースのみで行うってのはどういうことを意味してるのかわからんが あれはプロキシクラス作ってるだけの気がするから、そのプロキシクラスと 同じようなクラスを自分でコーディングすればできるんじゃね ウィザード使わずにプロキシクラス作りたいって話なら、 Wsdl.exeの使い方を調べてみれば
保守
検索ページへはhistory.back()で戻すw
というわけで移転( ´∀`)
(再生手続開始の申立て) 第二十一条 債務者に破産手続開始の原因となる事実の生ずるおそれがあるときは、債務者は、裁判所に対し、 再生手続開始の申立てをすることができる。債務者が事業の継続に著しい支障を来すことなく 弁済期にある債務を弁済することができないときも、同様とする。 2 前項前段に規定する場合には、債権者も、再生手続開始の申立てをすることができる。 (疎明) 第二十三条 再生手続開始の申立てをするときは、再生手続開始の原因となる事実を疎明しなければならない。 2 債権者が、前項の申立てをするときは、その有する債権の存在をも疎明しなければならない。
MVCの分離なんて理想論です 偉い人にはそれが分からんとです
ASP.NETだと、 Model 型付きDataSetや集計をするクラス、ストアド、SQL CLR View aspxとコードビハインド Controller 入力チェック、重複チェック、楽観ロック でしょ? ViewにControllerを書いてしまうことが多いけど、 それさえちゃんとすれば、ほとんど実行できてるに等しいんじゃね?
n層データ構造でググれ。 MVCってのはオブジェクト指向と同じで幾つかの宗派がある。
コードビハインドの関数を<%%>の中から呼べますか? シングルファイルだと普通に呼べるんですが・・・
普通に呼んでるが
81 :
79 :2009/04/18(土) 13:32:54 ID:???
あーそうか、アクセス修飾子を省略してたからダメだったんだ(C#)。 レスどうも。おかげで気づきました。
言語 .net1.1 C# すいません、初歩的な質問かもしれないのですが、 うちの会社では本番機サーバーにプログラムをリリースする時に、コンパイル済みdllファイルとソースファイル(aspx、resx、cs)を、 全部アップしてリリース作業終了となっています。 本来はdllだけでも良かったりしますか?
WEBサイト? WEBアプリ?
>>83 すいません、
会社の売上を管理するWEBサイトです。
社内LANだけに公開されています。
そもそもソースをアップと言ってもそれを公開するわけでもなかろう? 発行するようにしてるんであればそれに任せりゃいいんじゃね? ソースをどっ化のファイル鯖に上げるとか言うのなら話は別だけど
Webサイトならaspxファイルだけの場合もあるし、 何かの参照設定してdll読み込んでるならDLLと両方の場合もあるんじゃ? だから、この場合、たぶんなんかのライブラリとかを参照設定して利用してると考えれば 両方アップすればいいんでね?
>>85 >>86 ありがとうございます。
何らかの参照設定等が行われていると考えて、とりあえずこのままいきたいと思います。
ありがとうございました。
>>84 まず、開発環境かいてみ?
たぶん、
>>83 の言う、WEBサイトとWEBアプリの違いがわかってないと思うぞ
>言語 .net1.1 C# ってんだからWebアプリでそ だったらCSとか不要。 dllとかとaspxはもちろんいる。
>>88 >>89 度々すいません。
開発環境で試しにresxとcsファイルを
別の場所に退避させても普通に動作しました。
会社の人にも確認したところ、アップロード作業には
FFFTPを使用するのですが、複数画面のリリースが発生した場合
いちいちCTRL押しながらaspxファイルだけ選択してアップではなく、
シフト押しながらずらっとまとめて選択して
アップする方がラクだからとの事でした。
どうもありがとうございました。
なんかズレてる気がするのは俺だけ?
はぁ?って感じだな webサイトを発行っていうかプリコンパイルしてないのか
別に事前にコンパイルする必要はないだろ
ソースをそのまま公開サーバに置くのか?
社内だっつってんだろ。カスが! 「デスクトップにショートカット作っとくといいよ。」と同程度のアドバイスが理解できなくて こんなところでお門違いな質問しちゃっただけだよ。
ナイス カス呼ばわり
>>95 ファビョんなよwwwww
つうかこいつの会社レベル低そうだな
つうか社内用でもそろそろ1.1とかねぇよ
技術力は関係無いだろ だいたいシステム要件は顧客の希望なわけで
>>98 この場合自社が顧客なようですが
わけもわからず使ってるあたりがウフフな感じですね
この運用を今もやっているということは・・・・
だいたい想像がつきますね
自社が顧客だとしてもシステム要件は存在するだろ普通
>>100 この場合システム要件の話をしているわけはないと思いますが?
むしろ、何でもかんでも最新技術の利用を認める会社のほうが、少ないよな
どこまでを最新技術というのか・・・・
他のアプリが乗ってて運用してる場合 へんにアップデートするとおかしくなる可能性もあるからな セキュリティアップデート以外の余分なものは入れないのが普通だろ
それはやれないのなら仕方ないが実績が無いのは検証不足というんじゃね? まぁふつう鯖分けるとか対策するだろうけどさ
過去に作ったアプリについて、OSなりフレームワークをアップデートしても 動作するかどうかなんて検証する余裕なんてないよ まして他社製が動作してたら検証の余地なんて無い 仕方ないからその鯖にのせるために 新しいテクノロジを使えない例なんてゴマンとあるよ
単なるデプロイから要件定義の話に広がり、
果ては技術論にまで及ぶのが2chクオリティ
>>90 通常はリリース用のディレクトリを用意しておき、
開発が完了したら「Webサイトの発行」で出力先をリリース用ディレクトリを指定する。
(直接Webサーバを指定してもいいが)
本番環境へのアップロードはリリース用ディレクトリの中身全部をFFFTPで送ってやればおk
(それこそシフト押しながらずらっとまとめて選択してw)
ソースはどう管理してるのか知らないが、VSSなんかの場合はコミットして
タグはっておけばいいんじゃね?
ソースをそのままアップしても問題なく動くけど、セキュリティ意識を持つなら避けるべき。
昨今は内部犯行も多いしね・・
.NET1.1にWebサイトもWebサイトの発行も無えよ
2chクオリティとか言ってた奴がいちばん2chクオリティだったとわw
asp.net用にセッションをインテリセンスを利用してタイプセーフに 管理するクラスを記述してみたんだけどこういうのって有用かな?
ないよりはあった方がいいように思うけど、 果たして必要かと言われると微妙。 それが必要される背景とシステム的な需要は 分けて考えられるべきではないかと。 要するに場合による。
なるほどサンクス 帰宅したらどこかにうぷして公開してみるよ
>>111 こんな感じ
http://hp.vector.co.jp/authors/VA038417/NlpSession.zip ○使い方
・Sessionとして保存するクラスを定義する
Sessionに保存する情報を格納するClassを、NlpSessionDataBaseを継承して作成する
NlpSession.csの一番下のサンプルがそれ
・Sessionデータの保存
NlpSessionDataProvider.Session<SessionData>().BirthDateTime = DateTime.Now;
・Sessionデータの取得
DateTime dt = NlpSessionDataProvider.Session<SessionData>().BirthDateTime;
・Sessionが保存されているかどうか
bool hasSession = NlpSessionDataProvider.HasSession<SessionData>() ? true : false;
・Sessionの削除
NlpSessionDataProvider.RemoveSession<SessionData>();
ぬ・る・ぽ・製・作・所wwwwwwwwwwww なんちゅう名前付けてんだw つうか、あれだ・・・ 殴打の作者だったのか お世話になりました。orz うちでも似たようなの作りはしてる。 ページ単位で利用するセッションデータの管理と破棄の機能もくっつけてる感じのやつだけど Redirectで飛びまくるページなんかの条件保持とかに使ったりかなぁ… ケースバイケースで使えるんじゃないかな? と思う
∧_∧∧_∧ ガッ
( ・∀・)⊃Д´)
(O / つ つ ←
>>114 人 Y ゝ ) )
し(__) し し
なるほど。
windowsformでは、staticを利用したグローバル変数的なものを使う場合があるけど、
それをasp.netのsessionを利用して実現できないかと思ったのと、
かつインテリセンスを利用可能にして、タイプミスしないようにするためにと思って、
ジェネリクスを利用した似非singletonパターンぽい感じにしてみたんだけど、
わりとみんな似たようなことは考えてるんだね
>>115 むしろこういうの持ってないより持ってた方があとあと考える手間は減るわな
VS2005 .NET2.0 WebForm C# 処理中にマウスをwait(砂時計)にする方法しりませんか? ググりかたが悪いのか、WindowsForm しかでてきかません・・・
氏名 :TextBox 検証コントロール:RequiredFieldValidator メールアドレス :TextBox 検証コントロール:RequiredFieldValidator と RegularExpressionValidator メールアドレス(確認) :TextBox 検証コントロール:RequiredFieldValidator と CompareValidator メルマガ配信 :CheckBox(配信希望のときチェック) [送信]ボタンクリックで、確認画面を表示 のようなWebフォームを作りたいのですが 検証条件 1.氏名入力必須 2.メルマガ配信がチェック有りの場合は、メールアドレス入力必須 3.メルマガ配信がチェック無しの場合は、メールアドレス入力任意 のようにしたいのですがアドバイスお願いします。
>>117 マウスカーソルを出してるのはクライアントだから、
サーバ側のプログラムでマウスカーソルを変えることはできません
また、クライアントはサーバが処理中かどうかはわかりません
WEBのアプリってのはそういうもんです
>>118 メールアドレスの必須入力は、CustomValidator使って検査
>>117 asp.net ajaxでやってみたら、なんとなくだけどできそうな感じ
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="TestDiv" runat="server">
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
</div>
</ContentTemplate>
</asp:UpdatePanel>
Page_Loadに
this.Button1.Attributes.Add("onclick", "TestDiv.style.cursor = 'wait'");
としてjavascriptでbutton1クリック時にカーソルをwaitに変更し、
Button1_Clickイベント発生時に処理を行ったあとに
System.Web.UI.HtmlControls.HtmlGenericControl a = (System.Web.UI.HtmlControls.HtmlGenericControl)this.ScriptManager1.Page.FindControl("TestDiv");
a.Style.Add("cursor", "default");
でカーソルをデフォルトに戻す
>>118 validatorは型どおりのだと便利だけど、
少し複雑なことさせようとするととたんに不便になったり
結局、自分は自分で検証してlabelにエラーメッセージを表示させてるよ
122 :
120 :2009/04/29(水) 13:02:38 ID:???
ごめん最後の奴はテストのやつそのまま貼ってしまった 標準に戻すだけなら、 this.TestDiv.Style.Clear();か this.TestDiv.Style.Remove("cursor");でいいと思うけど、 postbackされると自動的にカーソルが元に戻ってしまうっぽいので、 何もしなくてもいいのかもしれない あんま検証してないけどいろいろ試してみると面白いかも
123 :
118 :2009/04/29(水) 15:48:19 ID:???
Protected Sub magazineCheckBox_CheckedChanged
(ByVal sender As Object, ByVal e As System.EventArgs)Handles chbMmagazine.CheckedChanged
If chbMmagazine.Checked Then
ReqEmail.Enabled = True
reqConfirm.Enabled = True
lblComent.Text = "チェック有り"
Else
ReqEmail.Enabled = False
reqConfirm.Enabled = False
lblComent.Text = "チェックなし"
End If
End Sub
みたいに書いてみたんだけど、チェックのON/OFF(hbMmagazine.Checked)を切り替えても
検証(メール欄入力検証:ReqEmail.Enabled = True/False、確認欄入力検証:reqConfirm.Enabled = True/False)
つまり、ErrorMesageの表示/非表示
が切り替わらない。どうすれば?
>>119 >メールアドレスの必須入力は、CustomValidator使って検査
CustomValidatoの使い方、args.IsValidがどうのていうのが検索したけどよくわからないです。
完全独学で勉強しているものでmicrosoftのサイトを見てもまだ???な状態です。
>>120 クライアントのスクリプト使うなら、Ajax使わなくてもできるような気がする
>>123 とりあえず入門書買ってこい
チェックボックスの変更でバリデータの有効/無効が切り替えられるのは、
ポストバックが発生した後だってことはわかってるか?
ポストバック発生しても切り替わってないってならソース晒せ
IsValidは検査に通ったかどうか設定する
あー、任意のページを別ページからインスタンス化したい。 そうすりゃテストとか死ぬほど楽なんだけどなぁ。
検証コントロールについて詳しく解説しているサイトがあったら教えてください
msdn
検証コントロール覚えるより正規表現を覚えたほうがいい気がする
129 :
nobodyさん :2009/04/30(木) 18:37:25 ID:8hdVVO13
ASP.NET ってHTMLの出力がめんどくない? みんなリテラルにつっこんでるの?
htmlそのものを自分で記述して出力することがあんまりないと思う 定型ならLabelに記述するし、テーブルで行によって変化するならRepeaterを使ってしまうから 仮にhtmlを埋め込み式で出力したい場合でも、 public string Nullpo1() return "ぬるぽ"; public void Nullpo2() Response.Write("ぬるぽ"); をコードビハインドに定義して <% =Nullpo1()%> <% Nullpo2();%> をhtmlに埋め込めばいいんでないの? phpと同じだし、そんな大変かな?
>>129 HTMLの生文字列を出力したくなったら、
設計がおかしい(少なくともASP.NET向きではない)と思う。
Labelに<br />をたまに打つ位だな。
132 :
nobodyさん :2009/05/01(金) 10:28:34 ID:2Yd9vHgr
PHPみたいに <?php foreach(): ?> <htmlタグ> <?php endforeach;?> とか <?php if(): ?> <htmlタグ> <?php else: ?> <htmlタグ> <?php endif; ?> みたいにやりたいんだけど。 出来ないのかな? <% =Nullpo1()%> こうゆうやり方が出来るのはしらなかった。 <dl> <dt>項目</dt> <dd>内容</dd> <dt>項目</dt> <dd>内容</dd> <dt>項目</dt> <dd>内容</dd> </dl> 上記の繰り返しなどをコードビハインド?上で リテラルなどに突っ込んで出力とかは出来るけど、 デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・
前者はRepeaterコントロールを使う 後者はいろいろやり方があるけど、 例えばある特定の場合のみ表示させたいhtmlタグがある場合は Visible=falseのPanelを配置して条件によってVisible=trueにして表示させる または複数の場合分けが存在しhtmlをごっそりと入れ替えたい場合には MultiViewとViewを利用して表示する条件に従って表示させたいViewを表示させるようにする >上記の繰り返しなどをコードビハインド?上でリテラルなどに突っ込んで出力とかは出来るけど、 これは完全にRepeaterコントロールの範疇のような気がする
134 :
133 :2009/05/01(金) 12:33:01 ID:???
あとaspみたいな扱いももちろんできるよ <body> <form id="form1" runat="server"> <% for (int i = 1; i < 10; i++) {%> ぬるぽ <%}%> </form> </body> 実行結果「ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ 」
>>132 >デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・
コードビハインドの理想は、デザインとコードの完全な分離なんだ
コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる
デザインするファイル(*.aspx)には一切のコード書かない
コードが必要なとこはすべてコントロールを置く。必要なコントロールがないなら作る
コードはすべてコードビハインド(*.aspx.cs,*.aspx.vb)に書く
これがasp.netなWEBアプリ開発の基本的な理想形
まあ実際は実行時バインド(<%= %>)とか便利なんで使いまくりなんだがなw
137 :
nobodyさん :2009/05/01(金) 13:53:38 ID:2Yd9vHgr
Repeaterの情報ありがとう。 入れ子も出来るみたいだし、それなりに使えるかも。 ただ、繰り返し中の条件分岐を作るのは面倒くさそう。 Panelの表示・非表示は思いついたけど、 Panelって<div>タグに置換されるからちょっといやな感じ。 中身は出力するけど、<div>タグには置換されないならありかも。 ><% for (int i = 1; i < 10; i++) {%> 上記の使い方が出来ないと思い込んでいたけど、 今日試してみたら出来た。 色々検索して探しても、そんな情報が見つからなかったからな。 みんな使っていないって事か? >コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。 HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。
138 :
nobodyさん :2009/05/01(金) 13:54:29 ID:2Yd9vHgr
とりあえず、 コードビハインドにパブリックな Hashtableを持たせて、 出力するデータを全て突っ込んで出力することにしました。(邪道?) ↓こんな感じ <% if value("flg") then %> <%= value("data") %> <% end if %> <% for each i as string in value("list") %> <%= string %> <% next %> フリーでテンプレートエンジンもあるようなので、 時間があったら試してみたいです。
邪道というか、.NET以前のasp的なやり方だな 旧aspの頃にはよくやってた >もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。 >HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。 逆だ。デザイナーに一切のコード見せなくするのが狙い まあ、プログラマーが一切html触らないのは理想だが、 これはさすがにちょっと無理が多いからな ホントは、htmlのレンダリングに関することは、コントロール作成者の役割で プログラマの役割じゃない、ってのが理想形なんだろうな。 (まあコントロール作成者はプログラマなんだがw) asp.netのコントロールはレンダリング相手によって出力するhtml変えるからな 少なくとも ><% if value("flg") then %> ><%= value("data") %> ><% end if %> これは関数化してこの前後のif、end if文ぐらいはコードビハインドに入れてくれと思う
panelがdivになるのが嫌だったら、 <table id="table1" runat="server"> にしてコードビハインドで this.table1.Visible = false でもいいんでないかな あと、よほど遠回りになるなら別だけど 多少のことなら「面倒」を理由に避けるのはいかんと思うw
ASP.NETでテンプレートエンジン使うくらいなら、 ASP.NET MVCを使う方が良いと思う。
142 :
nobodyさん :2009/05/01(金) 15:52:57 ID:2Yd9vHgr
>逆だ。デザイナーに一切のコード見せなくするのが狙い 理想はそうですよね。 上部に <% Page Language=… とかすら無くしたいものです。 <asp:****> みたいなタグが出てくるとデザインを変更しづらくなるので、 なるべく避けたいところです。 >これは関数化してこの前後のif、end if文ぐらいはコードビハインドに入れてくれと思う このいい方法がおもいつかないです。 例えば動的にアンカーの表示・非表示とURLとアンカーテキストを表示する場合、 どういった感じになるのですかね。 <a href="*****">*****</a> 現在はこんな感じです。 <% if value("hoge") then %> <a href="<%= value("hoge_url") %>"><%= value("hoge_name") %></a> <% end if %>
だから、従来のASPやPHPの方法論を頭から全く捨てて、ASP.NETという新しい概念として理解しないとだめ
動的にアンカーの表示非表示を行うならこうすればいい
protected void Button1_Click(object sender, EventArgs e)
{
if (DateTime.Now.Month == 5)
{
this.HyperLink1.NavigateUrl = @"
http://www.yahoo.co.jp/ ";
this.HyperLink1.Text = DateTime.Now.Month.ToString()+ "月";
this.HyperLink1.Visible = true;
}
}
144 :
nobodyさん :2009/05/01(金) 17:16:36 ID:2Yd9vHgr
>動的にアンカーの表示非表示を行うならこうすればいい こういった概念などはわかるんだけど、 デザイナとの分業を考えたときに難しいかなと。 例えばデザイナがアンカーテキストに taget="_blank" を 入れたい場合、わざわざプログラマーに頼む感じになると難しいです。
>例えばデザイナがアンカーテキストに taget="_blank" を入れたい場合、わざわざプログラマーに頼む感じになると難しいです。 デザイナがタグをこうするだけじゃん <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank">HyperLink</asp:HyperLink>
いやだから、taget="_blank"したいならaspxファイルにそう書いとけばいいだけ
ブログラマ全く関知する必要ないんだが?
asp.netのコントロール使うのが嫌なら、
<a>タグにrunat="server"って書いといてもらえば、コードビハインドでどうとでもできるだろ
関数化する例は
>>130 がそのままだろ。VBなら
funciton hoge() as string
if value("flg") then
return value("data")
else
return ""
end if
end funciton
こんな感じか。
んでaspxに
<%= hoge() %>
だけかいときゃいい。余分なコード見せる必要ないだろ
未検証だから間違っててもしらね
理想はこういったものはコントロールにするんだよ。
そうすれば、デザイン画面に表示するものも自分で設定できるから
>>146 <a href="test.html" id="anchor" runat="server" target="_blank">123</a>
でもいけるからね
お好きな方でドゾー
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank">HyperLink</asp:HyperLink>
<a href="test.html" ID="Anchor1" runat="server" target="_blank">Anchor</a>
</div>
</form>
if (DateTime.Now.Month == 5)
{
this.HyperLink1.NavigateUrl = @"
http://www.yahoo.co.jp/ ";
this.HyperLink1.Text = DateTime.Now.Month.ToString() + "月";
this.HyperLink1.Visible = true;
this.Anchor1.HRef = "
http://www.yahoo.co.jp/ ";
this.Anchor1.InnerText = DateTime.Now.Month.ToString() + "月";
this.Anchor1.Visible = true;
}
148 :
nobodyさん :2009/05/01(金) 18:43:59 ID:2Yd9vHgr
><a href="test.html" id="anchor" runat="server" target="_blank">123</a> なるほど、runat="server"をつければ変更出来るのですね。 勉強になります。 ASPタグを使わずにHTMLタグの繰返しを行う場合は、 Repeaterを使うのがベストですかね?
本を一冊買えば分かることを
Repeaterがいいんじゃない ASP.NETの実践的な本は少ないからね。
Repeaterタグの表現にaspタグが必要だから、どんな場合でも不可能 それより、なんでデザイナに対してそこまで気を遣わなければならないかを 記述したほうがもっと良い解決方法が浮かぶと思う
んー。 ASP.NETはPHPと大きく違うよねー。 PHPだとHTMLに埋め込むだけだし、 Dreamweaverも対応しているからデザイナと作業しやすいんだよね。
DreamWeaverはASP.NETも対応してて、普通にASP.NETのタグを出力するぞ? >PHPだとHTMLに埋め込むだけだし、 それもできるよ?
ああ、そうなんだ。知らなかった。 じゃあ、なんでコラボしにくいのかなぁ。
そもそも本当に、コラボしにくいのか?
CSSは当てにくいよね
何がどうあてにくいんだ?
サーバーコントロール使うと、長いIDが生成されない?
それとCSSと何の関係があるんだ?
IISの話もここでいいかな?
TechNetのフォーラムでいいんじゃない?とは思う
2chには2chの良さがw
ASP.NETのアプリでSessionを利用しているのですが、 時々タイムアウトしていないのに不意にセッション記憶値が 消える事がありこれを解決したいと思っています。 InProcで動かしているのでワーカープロセスがリサイクルしている せいと思うのですがリサイクルのイベントログを仕込んでも なにもログがでません。 他に何か思いつくことがありますでしょうか? 環境 ・Windows2003、IIS6、DotNet1.1 ・IISの設定画面でワーカープロセスがリサイクルしそうなのを すべてOFFした。 ・DotNet1.1、VS2003でビルドしたアプリをデプロイ 長文すみません。
リサイクルのイベントログってどうやってとってる? パフォーマンスカウンタで確認してるか
まずはステートサーバで稼働してプログラムやデバッグ環境に問題がないか確認したほうがいい
>>158 必ずしも長いIDが生成されるわけではないが、場合によっては
.aspxファイルに指定したIDと出力されたhtmlのIDが一致しない
たとえばリピーターなんかでそのタグを繰り返すと、
識別できるように繰り返されたタグに個別のIDが振られる
>>159 ID指定でCSS適用させてると問題になるかもな
後はサーバコントロールがプロパティからCSS生成したりしやがる時があったような気が
>>163 思いつくことってのはセッションが消える理由か?
クライアントかプロキシがセッションクッキーぽいしてるんじゃね
>>169 いや簡単だと思うよ
ID指定しなければいいだけ。普通にclass=""でCSSクラスを適用すればスタイルシートが適用される
ASP.NETを特殊なものと思い込みすぎだろ 吐き出し方にクセはあるとしても結局はただのHTMLとJavaScript・CSSで組み合わさったページ作るだけじゃないか
ポトペタだけで構築して、出来上がったソースを見もしないやつらが多いということだな
>172 その吐き出し方が気持ち悪いと思う人も多い
一度でもサーバコントロールを自作してみれば、 中身はただとResponse.Write(html)なのが理解できるのにな
コードビハインドをシンプルにするために、JavaScriptをaspxに埋め込みたい。 けれどマスタページ構成なんかで各ASP.NetコントロールのIDなんかをFindControlして ClientIDプロパティでひっぱってこないとJavaScriptで使えるIDを取得できない。 なのでコードビハインド上でJavaScriptの文字列を動的に出力する形にしてるんですけど もっと賢いやり方ありませんか? そもそもaspxにJavaScript書くのはデザイナさんがいやがる?
>>176 具体的に何がしたいの?
イベント発生元のコントロールと、イベントトリガーと、
何のコントロールのどのプロパティを操作したいのかが知りたい
178 :
176 :2009/05/04(月) 17:37:01 ID:???
失礼しました。 たとえば1~10の数値が選択できるDropDownList(ASPコントロール)が3つあって、 それぞれに選択された数値の合計が10以内かどうかを、ユーザ側環境でチェックするJavaScriptです。 チェックトリガはDropDownListのonChangeです。 このとき、DropDownListコントロールのIDはASP.NET側が生成してしまうため、 aspxファイルにJavaScriptを書く際のIDをどのように持ってくるのかなと思いまして。。 aspxにJavaScript置いて、コントロールのIDは<%= %>で参照するのが普通ですか? コントロールが3つ程度ならいいのですが、20個、30個を想定した場合はどうなんでしょう?
>>178 DropDownListのOnChangeで、合計値を出すってことかな?
そしたら、functionで、それぞれがOnChangeする度に足したり引いたりするスクリプトを書いて、
自分自身をfunction(this)とでもして渡せばいいんじゃない?
別に自分自身のID知らなくても計算可能だと思うが
サンプルかいてみたぞい <script type="text/javascript" src="prototype-1.6.0.3.js"></script> <script language="JavaScript"> var arrayid = new Array(); var arraynum = new Array(); function nullpo(drop){ if (arrayid.indexOf(drop.id) == -1) { arrayid.push(drop.id); arraynum.push(drop.value); } else { arraynum[arrayid.indexOf(drop.id)] = drop.value; } var sum = 0; for (i=0; i< arraynum.length; i++) { sum = sum + parseInt(arraynum[i]); } alert(sum); } </script>
<body> <select id="drop1" OnChange="nullpo(this);"> <option value="0">0 <option value="1">1 <option value="2">2 <option value="3">3 </select> <select id="drop2" OnChange="nullpo(this);"> <option value="0">0 <option value="1">1 <option value="2">2 <option value="3">3 </select> </body>
これならdropdownlistが何個になろうが、OnChange="nullpo(this);"を記述するだけ protorypeかjqueryあたりのハッシュテーブル使えばもっと楽にできるかもしれん
問題はデザイン時に指定しているIDと 実際に動作しているときに出力されるIDが違う、ってことなんだよな CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある で、解決方法とすれば、実行時にスクリプト書きかえるか なるべくID指定しなくて済むようにスクリプト組むぐらいしかないのかと ClientIDを決定するロジックを自分で決められればいいと思うんだが そんなことできないかな?
184 :
176 :2009/05/04(月) 21:07:27 ID:???
>>180-182 ありがとうございます。ASPで云々ではなくJavaScript側で対応ですか。
参考になります
>>183 CSSもIDとclassで書式が違うので問題になったりしますね。
「なんでIDで指定できないの?」みたいな
ExpressionWebってこの辺を解決してくれたりするんですかね?
>>183 おそらく無理
>子コントロールをページにレンダリングするコントロールもあります。
>このような親コントロールは名前付けコンテナであり、INamingContainer を実装します。
>名前付けコンテナを含むページをブラウザに表示すると、
>名前付けコンテナの子コントロールの name 属性と id 属性に一意の ID が指定されていることをページ ソースで確認できます。
>ただし、ブラウザで表示される ID を直接参照することはお勧めしません。
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
>代わりに、子コントロールの ClientID プロパティの値を取得し、
>この値を使用して子コントロールを参照します。
>たとえば、ページ内に動的にクライアント スクリプトを作成する場合があります。
>クライアント スクリプトが子コントロールを参照する場合、
>子コントロールの ClientID プロパティを取得して動的なスクリプトに組み込みます。
http://msdn.microsoft.com/ja-jp/library/3hc29e2a (VS.80).aspx
>>183 >CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある
それで、JQueryが出てきたんでは?
どこまで、使えるのか、まだ試してないが。
>>186 そうだjquery勉強しようと思ってたんだった
どんどん新しいテクノロジが出てきておいつかないよね
asp.net勉強して、C#でジェネリクスとかでてきて勉強して、
そう思ったらajaxでてきて、SQL/CLRもやんなきゃってなって、
LinqToEntityキタ━━━━(゚∀゚)━━━━!!、ラムダ式がきたっちゃになって、
今度はリッチクライアントでsilverlightですか?(´Д⊂グスン いまここ
jQueryで作るAjaxアプリケーション は良い本だった。
サーバサイドの実装がめんどくさそう asp.net ajaxはポトペタだしすごい便利なんだよな
>>186 JQuery詳しく知らないが、普通の一般的なスクリプトのライブラリじゃないの?
JQuery使うとIDに依存しない実装できるってんなら話は別だが
今問題にしてるのは、クライアントに出力されるIDをどうするか、って話で
サーバ側の制御の問題なんだが
>>190 いま見てみたんだが、だいぶいろんなことが可能そう
MSDNによれば、
>他のコントロール内でレンダリングされたコントロールの参照
>子コントロールをページにレンダリングするコントロールには、
>GridView、DetailsView、FormView、DataList、Repeater の
>各コントロールなどのデータ リスト コントロール、ユーザー コントロール、
>および Web パーツ コントロールが含まれます。
これらは行が動的に生成されるので、
操作した行にあるコントロールを操作するとか、
同じ列の同じコントロールを全部参照するとかは行うけど
ある特定行(ID)をピンポイントで操作するというのはあまりないと思うんだが、
そうすると
・$(".className") 特定のクラスを持つタグにアクセスする
・$(tagName, base) 要素を検索する
・$("tagName > tagName") 特定の階層条件を満たすタグにアクセスする
でほぼクリアできそうだ。
久しぶりにいじると楽しいjavascript jQueryでscriptを記述 <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> function culc() { var sum = 0; for (var i = 0; i < $(".calcSelect").size(); i++) { sum += parseInt($(".calcSelect").get(i).value); } alert(sum); } function getrow(clientid) { var object = $("#" + clientid); alert($("select", object).get(0).value); } </script>
Repeaterでdropdownlistを配置して <form id="form1" runat="server"> <div> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <div id = "<%# Container.ClientID %>"> <select id="Select1" class="calcSelect"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <input id="Button1" type="button" value="button" onclick="getrow('<%# Container.ClientID %>');"/> </div> </ItemTemplate> </asp:Repeater> <input id="Button2" type="button" value="button" onclick="culc();" /> </div> </form> リピータに適当にバインドする this.Repeater1.DataSource = new int[] { 1, 2, 3, 4, 5 }; this.Repeater1.DataBind();
行のobjectを取得する方法はいろいろあると思うけど、 今回はContainer.CliendIDで行ごとに一意の名前を付けて、 そこから目的とするobjectを取得してみた 列の集計は集計するobjectに同じclass名を設定すれば 配列で取得できるのでそこから合計値を求めることができる クライアント側だけで何かをしようと思うのなら割と便利かもしれない
>>191 同じクラスの要素や、同じタグの要素をID使わないでどうやって識別するんだ?
繰り返し系のコントロールはまあ仕方ないにしても
マスターページやUpdatePanelでもID変わるのがなぁ
>>194 細かい突っ込みだがな、
>今回はContainer.CliendIDで行ごとに一意の名前を付けて、
正確には、システムが自動的に生成した一意の名前を指定して、だな
システムが生成したIDを実行時バインドでスクリプト中に埋め込んでるんで、
これは実行時にスクリプト書き換えてる
で、このID生成ロジックだが、
>>185 が書いてある通り
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
だから、それなら自分で実装できないかと思ったんだよ
これができれば、マスターページ使うページはIDは
そのまま出力させる、ってことが可能じゃないかと思ったんだ
いま1.1でマスターページ使ってないシステムあるんだが、試しに
マスターページつかって2.0(3.5)に移行してみたら、クライアントスクリプト周りが全滅したんでなw
>>197 いや、だから
>>192-194 を読んでる?
今回は一意の名前としてContainer.CliendIDを利用しただけで、
それを自分の用意したものに変更すればいいだけでしょ?
そうすりゃ自分で生成したIDで実装しているのと同じじゃない。
例えば
private int _count = 0;
public string GetID(bool canAdd)
return canAdd ? "ctrl" + (this._count++).ToString() : "ctrl" + this._count.ToString();
を実装して、Container.ClientIDの代わりに実行時バインドしてあげればいい。
>>198 実行時バインドで動的に書き換えるならどうとでもなるだろ
そもそもの問題はな、ASP.NETのコントロール使うと
自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
これはデータバインドするような繰り返し系のコントロールに限らないんだ
で、このルールが制御できない
ルール決め打ちでも実用上問題ないかもしれないが、自分でルール決めれたら
実行時バインドに頼らなくても(クライアントスクリプトだけで)ID生成できるだろ
サーバコントロールじゃないhtml要素に実行時にID振るなら、自分で制御できるかもしれんな
webコントロールじゃなくてhtmlコントロールだと動作変わるのか?
あとで実験してみるが、たとえばdivに(実行時バインドで)ctrl1,2,3...ってID振るようにしても、
runat="server"つけたらID変わると思うんだ
そもそもrunat="server"つけると、解析エラーになった サーバコントロールのIDにバインド式は書けない模様
>>165 念のため言っとくが、アプリケーションプールのリサイクルとは別に
アプリケーション自体の再起動(アプリケーションドメインの再起動)もあるぞ。
まあありがちなのは、binフォルダにログ書くとかあほなことやってるパターンだな。
>>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ
IDは書き換えられないでしょ
>マスターページやUpdatePanelでもID変わるのがなぁ
こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
コントロール配置してもIDは変化しないよ(Repeater等は除く)?
>自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
まったくソースをみてくれてないんだなぁ。
誰もIDの話なんかしていないんだけど。
>そもそもrunat="server"つけると、解析エラーになったサーバコントロールのIDにバインド式は書けない模様
だからID名を実行時にバインドしろなんて言っていないし、
>>192-194 でもそんなことしてないんだが。
なんで
>>192-194 のソースを見て何をしているか理解しようとしてくれないのか理解に苦しむ。
>>202 >IDは書き換えられないでしょ
サーバコントロールじゃないhtml要素なら書き換えられる
>こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
>コントロール配置してもIDは変化しないよ(Repeater等は除く)?
これ、サーバコントロールでも?
後日検証してみる
>まったくソースをみてくれてないんだなぁ。
>誰もIDの話なんかしていないんだけど。
>>176 ,183 あたりの流れから話してるんだと思ったが、そうじゃなかったのか
じゃあお前に絡んだ俺が悪かった
>だからID名を実行時にバインドしろなんて言っていないし、
>>192-194 でもそんなことしてないんだが。
>>193 の
<div id = "<%# Container.ClientID %>">
は、IDを実行時にバインドしてるのじゃないのかね?
まあ、IDがどうこうを主眼にしてないなら、
>>192-194 について
これ以上俺が言いたいことはない
話がかみ合わないのも当然で、あやまっておく
>仮想ディレクトリ下のファイル・ディレクトリをいじってるので、 どういじってる? 例えばフォルダ作ったりしたら強制再起動だった気がするぞ、詳細は覚えてないが。
基本的にアプリからいじっていいのは、 App_Data配下のみだと思っておいた方がいい。
以外と良いスレだな。
>>203 何がしたいんだ?
反論のための反論か?
209 :
BASP21でメール送信の際 503エラーが起こっています。1 :2009/05/06(水) 13:07:40 ID:rRUTbrry
この質問をご覧いただきましてありがとうございます。 普段、Linux系のサーバを使っていますが、臨時でwindows + ASPのトラブルに当っています。 ASPサイトにて、BASP21で問題無くメール送信をしていたのですが、つい1週間程前から503エラーとなり、原因が判らず困っております。 コードは Set ObjBasp = Server.CreateObject("basp21") rc = ObjBasp.SendMail(メールサーバ,メールto,メールfrom,サブジェクト,mbody,"") Set ObjBasp = Nothing となっていて、1週間前まで送信に問題はありませんでした。 エラー戻り値は 503 This mail server requires authentication when attempting to send to a non-l となっています。 認証が必要なのかと思ったのですが、全く同じソースの、別のページでは 503エラーは出るものの、メールは送信できています。 逆に、メールが全く送信できないページがあり、そこの対処で四苦八苦しております。
210 :
BASP21でメール送信の際 503エラーが起こっています。2 :2009/05/06(水) 13:14:29 ID:rRUTbrry
WebResource.axd要求してるということは、ASP.NETだと思うんだが まず、ASP.NETなのか旧aspなのか?
212 :
BASP21でメール送信の際 503エラーが起こっています。 :2009/05/06(水) 16:30:05 ID:rRUTbrry
お返事感謝致します。 本当に不慣れでお恥ずかしい限りですが、 .NETでは無いと思われます。 下記が、ルートにある Default.aspx の頭の部分です <%@ Page Language="VB" MasterPageFile="~/xxxxe.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" title="xxxxxxx" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
.aspxってのは普通ASP.NETの拡張子なんだがな .aspxのなかでServer.CreateObject("basp21") やってるのか?
214 :
BASP21でメール送信の際 503エラーが起こっています。 :2009/05/06(水) 17:37:24 ID:rRUTbrry
お返事遅れて申し訳ありません。 Set ObjBasp = Server.CreateObject("basp21") 自体は、単体のdefault.aspで行っております。
>>203 いやだからだな・・・
サーバコントロールはRepeaterなどで配置するとIDが変わる
↓
jQueryを使えばいいじゃない
↓
jQuery使ったことないけどID直接指定(ID変わるから)できないから無意味では?
↓
jQueryでサーバコントロールに指定したclass名で直接的にオブジェクト取得できるし
jQueryで<div id=''></div>で囲めばid名で直接的にオブジェクト取得できるよ
(class名は変わらないし、<div>のタグはサーバコントロールではないのでID変わらないから)
という流れで話しているのに、
>>197 >だから、それなら自分で実装できないかと思ったんだよ→だから代替方法を説明してるんですが・・
>>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ→サーバコントロールはできないです
>>203 >は、IDを実行時にバインドしてるのじゃないのかね?→サーバコントロールできないからIDかわらんdivで代替してるんです
と、かみ合ってないのは、あなたとほうだと思う
だから
>>192-194 を実際に動作させて、少しソースをいじってくれれば、
Repeaterコントロール内に設置された、
ASP.NETによって長いIDが勝手に付けられてしまうコントロールでも
オブジェクトを取得できるということを示していることがわかると思ううんだが、
なんで試してくれないの?
MasterPageでも同様の手法で、長いIDに変わってしまうコントロールを
取得できるから、わりと便利だと思うんだが。
>>216 ためしてるし、お前が示している範囲ではおまえの言うとおりだ
ASPかASP.NETかどっちなんだよw
ASP.NET AJAX + jQueryで適当にやってると酷いことになるよね ASP.NET + jQueryかASP.NET AJAXオンリーにするかで分けた方がいいと思う
>>214 Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は
.aspxじゃなくて.aspなのか?
まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
223 :
BASP21でメール送信の際 503エラーが起こっています。 :2009/05/07(木) 11:20:52 ID:eAkk+1Gw
皆さん、お忙しい中ご返答感謝いたします。
確認したところ、ASP.NETでした。
>>222 様
Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は asp です。
>まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
私も、今はその線が強いと感じて現在テスト中です。
今まで、問題がありませんでしたので、なぜ急に・・・と思っているのですが。
しかもメール自体は送信されているので・・・
サポートからの/WebResource.axd が問題という所でASP系資料ひっくり返したり、
孤軍奮闘でしたので、お返事大変心強いです。感謝致します。
225 :
BASP21でメール送信の際 503エラーが起こっています。 :2009/05/07(木) 12:38:46 ID:eAkk+1Gw
>>223 様
失礼がありましたこと、お詫び申し上げます。
/WebResource.axdはASP.NET特有。 だが問題のページはaspだという。 だが確認してみればASP.NETだという。
227 :
BASP21でメール送信の際 503エラーが起こっています。 :2009/05/07(木) 23:08:17 ID:o/J6ITqf
本当に門外漢ですみません・・・サイト自体は全く知らない人間が作ったものでして・・・ サポートの続報では、 認証は必要無いそうです。 メールは送れてるので、 default.asp内のObjBasp.SendMail 自体は動いていて、 何か他の部分でしくじってて、それが ObjBasp.SendMailの戻り値503と/WebResource.axdのエラーとしてでてるのだろうと。 しかし、ObjBasp.SendMailの戻り値と/WebResource.axdの関連性がイマイチわかりません。 メールが送れてるにも関わらず、503の戻り値があり、 そのエラーのヒントは /WebResource.axd だということなのですが・・・
ヒントってなんだよw ヒントもらってるなら正解も教えてもらえw aspならWebResource.axdは直接関係ないよ ObjBasp.SendMailの戻り値503 って何をどうやって何を確認してるんだ
ヒントとか・・・ 何となくわかってるけど解決してないとかそういうもんじゃねぇのかw 調べる時間を得るために
ascxファイルとcsファイルを作ったんだが、上手く値が渡されない(Labelとか) aspxのときは問題なくいったんだが、ascxにした途端、宣言したlabelはnullがなんとかとかいって、 値がうまく共有?出来ない どなたが打開のヒント頂けませんか?
ソースをうぷしれ
>>231 UserControl1.Findcontrol("Label1").text = "hage"
//キャスト省略
>>233 は教えてあげる目的でそういう記述してくれてると思うけど、
実際にはLabelオブジェクトをプロパティで公開するか
Label.Textを公開してあげればいいんじゃないかと思われる
235 :
231 :2009/05/09(土) 00:26:29 ID:???
ごめんなさい、非常に強い睡魔で寝てしまいました
>>232-234 俺の勘違いでイベント発生してないだけでした
本当にバカでした
(#^ω^)…
それでもlabelobjectがnullな状態ってのがよくわかんないね
くっそー いままでprototypeだったけどjquery結構便利だな なんか和んだ( ´ー`)フゥー...
>>238 VS2008SP1からだったか、jqueryは標準サポートだしな
VS2005でなんとかしてjQuery使えないかな IntelliSenseは無くてもいいから
241 :
163 :2009/05/12(火) 01:28:31 ID:???
>>204 の続きです。
以下のイベントログが出力されており、
AppPoolが再起動している為、
セッション情報が消えてるぽいです。
クラッシュダンプで調べるしかないでしょうか?
他に調査方法があればご教授お願い致します。
・イベントログ
アプリケーション プール 'xxx' を提供しているプロセスは、
World Wide Web 発行サービスで致命的な通信エラーを検出しました。
イベントID 1011
>>240 普通にJQueryいれりゃいんじゃないか?
243 :
nobodyさん :2009/05/12(火) 05:14:26 ID:U71Iyk1V
旧ASPでPDFファイルを作成したいのですが、どんな方法があるでしょうか。 PDFは表形式で、グリッドの高さは可変で、行の途中にページの境目が来る ようならその行の前に改ページしなくてはなりません。 サーバー側の処理でPDFファイル化したいです。 よろしくお願いします。
安心したまえ。PDFだってテキスト直うちで書けるんだ。 つまり、FileSystemObjectでテキストファイルを生成して、 後はPDFの仕様通り文字列を吐き出せばいいだけだよ。簡単でしょ。 マジレスすると、無理だから別途そういうパッケージソフトを買う。 ビジネスソフト板で帳票作成ソフトというと、まぁ数は限られるから調べてみるといい。
>>241 本質的な解決ではないけど、session維持したいなら
stateserverモードを使うとかどうよ?
ClassicASPでPDFって言うと何があるのかね ASP.NETならActiveReport一押しなんだけど
247 :
243 :2009/05/12(火) 11:35:40 ID:U71Iyk1V
>>246 ActiveReportって定型のフォーマットしかできないイメージなんですが、
グリッドの高さ変えたりページはみだす前に改行したりできますか?
>>247 CanGrowとかCanShrinkとか
まぁ・・・簡単な動的〜FORMATイベントとか駆使して複雑な動的ってのもできるっちゃぁ出来ると思うけど
たいがいの案件はこなせてきた
一回体験ばん入れて使ってみればどうかな?
250 :
249 :2009/05/12(火) 12:03:47 ID:???
だめだ・・・日本語が支離滅裂だ… 疲れてんのかな・・・
>>247 >グリッドの高さ変えたりページはみだす前に改行したりできますか?
設計が悪いだけじゃない?
改行したら自動的に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.
//フォーマットイベントでは、レポートセクションやコントロールの高さや表示/非表示などを含む
//表示に関するプロパティを変更することができる
↑ すまん上の「できない例」は想像の話。 グループヘッダーとか、レポートのフッターの改行とか伸長とか、改ページごとに表示するとかは 帳票によってクセがあったり得手不得手があるもんなので、試してみるしかないね。
>>251 ActiveReportsならASP.NETのも基本的に変わらないけど
>改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕
CanGrowプロパティだったかな? で伸縮させるように出来る
>それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
>もしくはそのまま印刷してくれるを選択できるとか
プロパティいじるだけでそうなるはず。
KeepTogetherかなんか忘れたけど
高さ操作は処理中にしようと思うと基本的にFormatイベントでのみしか推奨されていないけどいける
中途半端な知識なんで勘違い多いかも知れんが
CustomValidatorを継承したコントロールを作ったんだけど、 ページ内のValidationSummaryがErrorMessageを拾ってくれない。 isValidやErrorMessageは正しくセットされていることは確認した。 カスタムコントロールのは拾ってくれないのかな?
継承って文字通り継承? それともユーザコントロール?
文字通りの継承。 検証失敗時にTextが表示されるし、 ValidationGroupも検知して検証してくれている。 ただ、なぜかValidationSummaryに反映されない。 もちろんPage.IsValidもfalseになってる。
Page.GetValidators()を調べてみたんだが、 単にメンバに持ってるValidatorCollentionをsingletonで返してるだけなんだな どうやってValidatorCollentionにValidator(BaseValidator)をaddしてるのかよくわからん ValidatorCollentionの中身も単なるIEnumerableを実装したリストクラスに見えるし
258 :
sage :2009/05/13(水) 15:35:29 ID:???
チラ裏 今更ながらIIS+ASP.NET+SQLiteでゴニョゴニョしてみたけど、手軽で良いわこれ。 要IIS(monoっつー手もあるけど保留)な点さえクリア出来るなら、ちょっとしたページ作成なら これでいいや。
オレもこれやりたくて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で。
PostBackは原則的に同一ページにするのが望ましいというのはわかってて、 あえてそれをやってるんだよね?
はぁ? 馬鹿じゃね。しねよ
そこらの本読むとPostbackUrlやServer.Transferの方が Response.Redirectよりよく思えるんだよな。 いやまぁ実際メリットもあるけど。
ASP.NET MVCのほうが良いよ。
PostbackUrlが良いと言ってるやつは実践してみてないやつ。 ASP.NETの各種仕組みと相性が悪い。 Server.Transferはいいんだけど。URLが紛らわしくなるため敬遠されることが多い。
一つの画面に収まる機能は一つのページに記述して 異なるページに遷移するときはsessionだのcookieだの使用したほうがわかりやすいよね asp.netの場合は1ページが1クラスだから、 クラス内の処理は、なるべくクラス内に責任もって記述してあげるのが オブジェクト指向の観点からもわかりやすい気がする 各ページのクラスにCookieやSessionを扱う、 ICookieや、ISessionみたいなインターフェースを実装して、 Serializableなデータを保持するクラスを、 ページ間でやりとりできるようにしたら面白いのになと思ったり。
>>267 うちはページ継承してベースページを作成して
各機能ページはそれを継承して処理ってる
セッション管理とかログインしているいないとかのチェックはベースページ側でやってたり
インターフェイスもいいけどなんか使いどころが難しくってさ・・・
各ページで実装もセにゃいかんし
レベルが低いだけだとは思うが
やたらとインターフェイス使いたがるのもどうかしてる
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("
http://XXXXX/ERRGAMEN.aspx ")
End If
End If
272 :
270 :2009/05/14(木) 13:26:27 ID:???
>>271 的確なアドバイスありがとうございます。
リダイレクトをtransferにすることで対処できました。
ここASP.NETだけど・・・
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しただけで、それ以上増分されません。 何がいけないのでしょうか?
>>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がいいと思う
早速のレスありがとうございます。 >privateにすると、そのPageのメンバ変数になるので、 >ポストバックすると新しいPageのインスタンスが生成されるから、 >Pcountも新しいインスタンスの異なるメンバ変数扱いになって >ポストバック前のデータを保持しない ということですね、理解しました。 データの保持の違いとか、処理タイミングとか、実行順とかまだ整理できて無くて そのために簡単なサンプルフォームを作って、カウンター表示を仕込んで試しているのですが 条件が変わると自分の狙った内容と実行結果が違ってたりして、・・・頑張ります!
Web開発の初期に、よくはまる道だ がんばれ
JavaScriptで好き勝手やって、ViewStateの内容と 同期しなくなるとか昔はまったな。 挙句、不正な操作扱いされたりとか。
肝心なのはPublicかPrivateかじゃなくて Sharedかそうじゃないかなんだが、大丈夫か
最近VB.NETでのレスをよく見かけるが、実業務のasp.netでもVBって多いのか? 言語の優劣を語る気はないがなんとなく気になったC#使い。
もともとのASPがVBだから、その流れでVBが多いんじゃない? 業務系もVB6の流れを汲むところは、今でもVB.NETが多いし 新しい言語に切り替えるって難しいよね 新しいテクノロジに理解があるところばかりじゃないし 過去の資産に縛られたりして
で旧VBで下手に培われてしまった悪しき習慣が.NETにも浸食するんだぜ。 VBの頃はネットが普及したせいで、ばかみたいなコードや習慣が広がりすぎた。 でその悪しき習慣をASP.NETとかにまでそのまま持ってくるもんだからとんでもないことに。
>>280 俺はC#だ
VBなんて見ただけで寒気がする
質問 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 :2009/05/16(土) 12:15:07 ID:???
ちなみに俺はリアルモンク属性だからはやく答えないと病院食を食うことになる
自分で調べろって感じだな
287 :
284 :2009/05/16(土) 12:36:25 ID:???
実は理解度クイズだよ。
正答率は自称詳しい人でも結構低かったりもする。
>>285 誰だよおまえはw
288 :
284 :2009/05/16(土) 12:38:15 ID:???
とでも書けば、誰かが答えてくれるに違いない
いやいやクイズという限り、いつか出題者が回答するから問題ない
まあ言われてみれば誤解さえれそうだが、ほんとにクイズだよ。 俺がさっきちょっと考えてみただけの。 テストや宿題じゃなくて(っていうか中身見りゃわかるだろうけど、そういうレベルの問題じゃない) 正解は○がって数書こうと思ったけど、結構偏ってるな、疑うなら書くが。 問題のニュアンスはわりと詳しいつもりやつが理解してないことが多かったもの。 その前に内容がマニアックに偏ってるけどな。
こんな? 1× 2× 3? 4○ 5× 6? 7× 8○ 9○ 10? 11○ 12? 13× ?のとこはワカンネ あと設定次第だったり、環境次第だったりするところがあるよね ViewStateUserKeyが空文字の場合とか、 認証チケットは暗号化されてるけど認証に至るまでの経緯でhttpsでないと安全でない場合とか
いや8も×か 中身じゃなくてApplicationオブジェクトそのものは別インスタンスかな
正解は5個、かな?(ざっと確認してみたから間違ってたらすまんね) 環境しだいだったりするのは確かにあるが、 環境を特殊にどうこうした場合とかではなくて 一般的な標準的な状態と思ってもらっていい。 ViewStateUserKeyの場合はもちろん文字列をうまく設定すれば普通に利用できるか?という話だし、 認証チケットの扱いも特殊な状況は想定していない。 単にHTTPSじゃない経路で認証チケットを使うのは安全か?(認証チケット自体は暗号化されているが)。 ということ Applicationオブジェクトは、そこに保存した変数というか、中身のことと思ってくれていいよ。 書き方悪かったな、いわゆるApplication変数はサーバ内で完全に一つと思っていいか?ということ。
いやいや気になるから正確な答えを頼むよw
2 4 9 10 が○ それ以外は×だよ
基本的にとか、望ましいとか言っちゃうとあいまいさがのこるから 問題文もう1回精査してから回答とともにアップしなおしてくれ
やだよめんどくさい。 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.×
>>295 以上の情報が何もないじゃないか
解説ぐらい書けよ
自分で調べろよw
今携帯だから後で書くよ。 疑問のある番号あるなら疑問点を書いてね。
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える インスタンス変数ってのは、スタティックじゃない変数ということかな? Global.asaxにPublicな変数定義しとけば、グローバルに使えると思うんだが
そ、スタティックじゃないってこと。
単にグローバル変数ってのもやや曖昧だったね。 ここでは、アプリケーション全体で共有できるグローバル変数という意味。 まあだいたい一般的にこういう意味になるとは思うが。
クイズ 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.×Global.asaxは各リクエストに一つのインスタンスが割り当てられる(リクエスト完了後はプールされて再利用) 2.○1.より、リクエストに関する情報をインスタンス変数に保持することができる 3.×セッション準備時の同期化などの仕組みにより、スレッドが切り替わることがある 4.○もちろん使える 5.×1.より、インスタンス変数はアプリケーション全体で共有できない 6.×実はIsReusableは無視されている(常に再利用されない、まあこれは今の実装の話であってどうでもいい話ではある) 7.×そんなわけはない(むしろApplication変数はあまりお薦めではない、これにはいろいろ理由があるが) 8.×Webガーデンを使えば単一にはならない、またアプリケーションのリサイクルなどにより一時的に複数になり得る 9.○検証が有効であれば、少なくとも中身を改ざんされることはない(キーが漏れてるとかそういう状況はない前提) 10.○ワーカプロセスのリサイクルにより、一時的に複数同時に動作することがある 11.×盗聴されれば見事に不正アクセスできる(チケットの暗号化の意味はまた別にある) 12.×認証チケットは無効にはできない(ログアウトはクッキーを消すだけ)、とくに有効期限が長い場合これは要注意 13.×そんなわけはない
こういうのは問題の出し方が難しいな 主眼をどこに置くかで結果が違いそうなこともありそうだ それはともかく知らないことがいくつかあったので勉強になったよ 今度実験してみようっと
.NETっでviewState OFF設定にしても、実行したら勝手にviewStateが入ってるんだけどなんでなんだろう?
>>307 イベント識別するのにもViewState使ってたと思うからその分じゃね
でも.NETでできてるサイトで、ソース(htmlの)みてもviewStateが一切無いページとかあるんだよね。 つまり.NETのコントロール一切使わなければ出ないって事かな? それだと.NET使う意味ねーな・・・
例えばどこ?
ああそうだMVCならでないかもね
なんか、viewstate="false"ってやってても <asp:CheckBox id="CheckBox1" runat="server" /> がたくさんあると、viewstateがえらいことになる・・・・ なんとかしてOFFにしたいもんだ
実際に20個設置してみたけど、これがえらいこと?? PostBack前の状態を維持する仕組みをhiddenフィールドで ベタに構築することを考えたら遙かにサイズは小さいと思うし、 セキュリティ的にも安心できるし、 十分に利便性はあると思うけど それを考慮してもViewStateが嫌ならASP.NETを使わないか 旧ASPとして利用するしかないね
enableviewstate=falseの意味ねーじゃん ばか?
20個設置してたら2kぐらいの文字列にならん?
<form runat="server">を使わなければviewstate撲滅できるよ 使えるコントロールが限られるけど
>>314 falseに設定したものはviewstate反映されてないだろ?
>>318 falseにしたコントロールやページに関してはViewStateに反映されないよ
ただASP.NETとして必要なぶんが反映されてるだけ
んだな >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でやってるよ。
ViewStateだとドロップダウンリストの選択位置とか覚えておいてくれるから便利。 PHPとかで実装しようとすると大変だろうな
基地外ばっかり
>>321 大変ではないけどめんどくさいだけ
便利なのには違いない
つうか、必要でないViewStateだけ残して切ればいいじゃん
それすら嫌とか言うなら論外だろ
何かデータを保持るためのInputとかを別の形で実装してるようなもんじゃないか
ViewState切り詰め話はTechNet辺りでもよく出てるが、 大した問題にならないから無視しろか、 サーバーコントロールは極力使わなずResponse.writeしろの、 大体この二つに分かれてる感じだな。 一時期俺も削減に躍起になってたけど、そもそもASP.NETって時点で… と気づいてからは余りこだわらなくなったな。
10KBのViewStateには超文句言うのに平気で数十KBの画像おきまくったりするページワロス
画像は受信拒否できるしなぁ ViewStateは問答無用だろ。。
制作者からの視点で論じてたんじゃないのか?
328 :
nobodyさん :2009/05/21(木) 01:36:07 ID:/8BtlCky
ViewStateこつこつ削ってどれだけ結果に違いが出るんだよ。ほぼ意味ねーだろ。こういう所に拘るPGはマジ使えねぇ。
携帯みたいな従量課金の場合には影響があるので 気になるプログラマはいると思う んで、ユーザ数が多いと、そういうコツコツが大事だったりするので、 なんでViewStateを完全に無くすことができないかを知りたいと思う好奇心は プログラマに必要な資質だと思う だけど、ViewStateの動作を詳しく把握してもいないのに ViewStateの存在を制御できないから気持ち悪いとか、 こんなにViewStateがたくさん埋め込まれるのは理解できない みたいなこと言ってるプログラマがいたら確かに使えない奴だと思う
>携帯みたいな従量課金の場合には影響があるので >気になるプログラマはいると思う 普通自動でセッションに保存されるでしょ
例えばGoogleの検索結果なんかはそのままブックマークできるけど、 そういうのやろうとすると邪魔じゃね?viewstate。
意味がわからん。 ViewStateに対して間違った期待をしてないか。
ブックマークさせたいならGETだけでアクセス出来るようにしとくだけ。 ポストバックの結果をブックマークしたいなんてことしなければ。
当たり前のことだがASP.NET使ってるんだからそれに見合う環境は用意するべきだろ
みなさんSeasar.NETやEntlibなどのフレームワークは利用されていますか? 参考までにそのメリット・デメリットなどご意見いただけないでしょうか。
ENTLIB大袈裟 S2.NET合わない
337 :
335 :2009/05/21(木) 15:29:27 ID:???
>>336 そうですか。
紹介している記事もちらほら見かけるし、一見便利そうだったんで
使うのが一般的なのかとおもったのですが、そうでもないんですかね。
今何もないなら試してみるのもいいとは思うよ。 俺は使う気はないがもちろん使えることもあるだろう。
覚えれば便利そうだねぇ .NETに取り入れてられればいいんだけど 標準でないものを使うのは気が引ける といいつつJQuery使ってるけどw
340 :
335 :2009/05/21(木) 17:29:21 ID:???
今の仕事はClassicASPがほとんどなんです。 その片手間で.NET学習しながら次の案件を・・・とは考えているのですが、 なかなか時代の進歩に学習が追い付かなくて悩んでたんです。 ご意見ありがとうございました。参考にいたします。
念のために書いておくと、 ASPの片手間でASP.NETは無謀。
>>333 Googleの検索、トップページじゃなくて検索後のページで考えれば、
動作的にはポストバックでしょ(getだけど)。
その結果をブックマークしたい、って話よ。
>>343 例えばTextBoxのサーバコントロールを設置して、
「送信」ボタンをクリックすると、自動的にPOSTでポストバックされるということを
言いたいんじゃないかと想像
よくわからんが<form>をmethod="get"にするだけで、 ViewStateからなにやらクエリパラメータになるんだね 長いViewStateだと死にそうだけど 普通にクエリパラメータを作成して、Response.Redirectして 受け取り側では、Page.Request.QueryStringでGET内容を取得して 処理すれば手間(といってもphpとかなら当たり前の作業)だけど実現できそうだ つーか、phpでは当たり前の実装が手間に感じるほど PostBackは便利すぎってことだよね・・ この辺をうまく実装してくれるような仕組みってASP.NETにあったっけ?
だからそういう香具師はASP.NET MVCを使えと (ry
MVCの利点がイマイチよくわかんないのよね
ポストバックとかViewStateとかASP.NET特有の概念が嫌いで 古き良きWeb開発をしたい人にはとても良い。 しかしまあ、Webアプリ開発初心者には普通のASP.NETのが簡単だろうな。 Java人なんかにはMVCはグッとくるかもな。
>>342 クエリに検索キーがついたURLの文字列をブックマーク(記録)するだけで
ポストバックとかは関係無いと思うが。。
だから、ブックマークする為に
ブラウザのアドレス欄に「検索キーがついたURLの文字列」が現れて欲しい訳だけど、
form runat="server" method="post"
内のサーバコントロールに(ユーザーが)検索キーを入力した場合、
クエリ文字列は現れてくれない(URLは変化しない)し、
method="get"
にすれば現れるけど、もれなくviewstateもついてくるから邪魔。
っていう話。
>>344 でだいたい合ってる。
まあそこは自前でやるなりするしかないでしょ。 ってのが最初から言われてることでしょ。
単純な設定変更とか、そういうレベルではできないね。
何にしても便利なやり方にはトレードオフはあるわな。
ASP.NET MVCみたいの使うとか(詳しく知らんからどんな感じにできるのか分からんけど)、
こういう用途の時だけは、ポストバックされた情報をもとに
クエリやパスに直してリダイレクトして結果表示ってのが簡単かな。
>>345 みたいな方法だね。
そもそも論でポストバック結果をブックマークしたいってのはどういう状況?
>>352 よく考えたらNameValueCollentionをメンバに持つクラスを作って、
それにAddされて内容に従って、name=value&name1=value1みたいな出力をさせて、
URL作るだけだから、そんなに面倒じゃないね
受け取り側もHttpUtility.ParseQueryStringでやれば、
URLを自動的にNameValueCollectionに入れてくれる
ひょっとしたら、もっと便利なutilityクラスがあるかもしれないけど。
>>353 検索結果を表示させる一覧ページとかじゃない?
例えば業務なら担当が自分のページだけをブックマークしておいて、すぐに表示したいとか
356 :
nobodyさん :2009/05/23(土) 13:46:59 ID:0dm/bxqY
そこそこの規模の運用でサイト分けってどうされていますか? 現在、IIS上、1つのWebアプリの中に10個程フォルダ分けして運用していますが、 これら全てをチェックアウトしてくると、1ビルドに軽く10分程かかります。 したがって、毎回開発に必要な分を取捨選択して落としてきています。 以前、別の会社が作成したサイトを見せてもらった時は、 そもそもサイトはIIS上全て別Webアプリとして管理されていました。 しかし、そのためにApp_Code配下の共有ライブラリは それぞれのサイトごとに保持するという形を取られていました。 通常、あるべき管理体系を考えると前者はあり得ないんでしょうが、 後者の冗長管理もどうなんだと、いう感じです。
>>355 そういう用途ならサーバ側に用意するのが普通では?
業務に関係無く、要は個人用にカスタマイズしたページだよな。。
検索結果だって毎回同じキーワードで検索する意味不明。
>>356 開発元(マイクロソフト)が発行している開発技術大全だかに
詳しく解説されてるよ。ASP.NETの応用編だったかな。
発行年月は古いが基本的なことが書かれていてためになる。
ViewStateなんかも巷の初心者向けには書かれてないことがあったりするからおすすめ。
>>357 いや、だからgetで指定されてると便利な場合だよ
googlemapのような緯度経度で指定してリンクを張りたいとか、
特定の商品のカテゴリ一覧だけを表示させたいとか。
一つのページ内で完結しているんでなく、
外部からのリンクを許可するような場合。
>>357 そのサーバ側の用意として、getで指定するページを作るわけだが
まあ、厳密にはポストバックされているページではないがな
>>356 運用って何を指しているんだ?
チェックアウトやビルドは通常開発段階での話だが、
開発方法をして運用っていってるのか?
あるべき管理体制ってのは、何の管理をする体制のこと?
ソースの管理か?
>>360 エスパーすると、共有のライブラリをプロジェクト(Webサイト)ごとに
管理しないといけないから面倒ってことでしょ
それでも1サイトを1プロジェクトにして参照設定して、
発行すればライブラリも発行されるからそれの何が不便なのかよくわからないけど。
同じサーバに同じDLLが複数存在することを気持ち悪いと思うのなら
感覚としては理解できるけど、逆に、そのサイトがアクセス数が増大してしまって、
個別のサーバに移植したいという需要が発生した時には、
何も考えることなくそのWebサイトだけを他に移動させればいいんで、
その点では利便性は増してると思うけど。
>>350 HttpRequest.QueryString()を使えばいいだけのような気がするのだが。
別にPostBackだけが唯一のパラメータ取得の方法じゃないし。
お前ホントに頭悪いな
というかさ、ViewStateが「強制」なのが気持ち悪いのであって アクセス数が多かったり、携帯だったりだと少しでも無駄は省きたいわけだ。 無駄にステートを保存してもらわなくていいし。 なんでページで「OFF」と指定しているのに組み込まれるのか。 というと、ASP.NETつかうなだとかいうやつがでてくるだろうけど、 これはMSも設計ミスと認めてるわけで、次.NETでは完全にOFFになるようだ。 結論からいうと3.5までではあきらめろ。
※ただしイケメンに限る
ViewState無しで、POSTされた後であるかどうかをどうやって判断するんだろうな 改ざん無しで
携帯はモバイルASP.NET使わないほうが悪い
368 :
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で お手軽に実現出来そうなんですが。
テーブル構造がよく分からないが、 SQLテーブルに日付テーブルの日付をinner joinして 日付テーブルID、SEQテーブルID、日付、項目というテーブルを取得して、 日付でソートし、日付が異なるたびに実行時バインドで<tr><td>yyyy/MM/dd</td></tr> という行を表示してやればrepeaterを入れ子にしなくてもいいんでね?
>>368 最終的にどんなHTMLにしたいか考えたら結構簡単だと思うんだけど・・・
どんな方法だって実現できると思うけど?
あれだけど、極端な話テーブル使う方法もあるだろうし
日付、SEQでソートして、日付が変わったときだけ日付を表示すればいいんだろ 入れ子にする必要なんてないだろ 日付の部分だけ実行時バインドで、表示するかどうか判定するロジック組めばいいんじゃね
>次.NETでは完全にOFFになるようだ。 詳しく
373 :
nobodyさん :2009/05/26(火) 00:59:11 ID:/YYr/a48
>>372 ASP.NET 4.0でMVC Framework標準装備って話でしょ。
ただ、MVC採用が現行の切り捨てに直結はしないと思うが。
そういう意味なの? どう考えても置き換わるもんじゃないのに。
コードビハインドがなくなったら、 いままでのサーバコントロールとか一式駄目になるな
うーむMVCも触ってみようかな
MVCやってみた 実行時バインドを多様してhtmlとコードを分離してるってだけみたいな感じだね M→Linq To SQLやLink To Entityなどデータベースからデータを取得する V→htmlと実行時バインド C→実行時バインドの結果だけを作るクラス こんな感じ? むかし普通のASPの頃、デザインとコードを分離したくて、 1)デザイナの作成したhtmlの任意の場所に##Result##みたいなマーカーを設置する 2)ASPで出力するhtmlを作成する 3)ASPでFSOで1)を読み込んで、##Result##の文字を2)で作成したhtmlで置換する なんてことをやってたけど、これをシステム化した感じだ コードとデザインを別の意味で分離できるからこれはこれで便利なんだろう ただ動的に生成されるタグは少なからず存在するので JavaScriptの問題はやっぱり解決はできなさそうだ。
VWD 2005 Express Editionを使っています。 データベースのテーブル作成で、 列名'ID' を IDENTITYの指定で(Is Identity)>「はい」を選択し ・IDENTITYインクリメント=1 ・IDENTITYシード=1 とした場合、 「テーブルデータの表示」を開くと、自動的に初期値ID=1が表示され、 1レコードを入力完了すると、自動的にID=1が表示される。 となるのではと思うのですが、 'ID' の欄が「セルは読み取り専用です。」と(タスクバーに)表示され手入力不可。 これはよいのですが、データがNULLのままです。 どうすれば自動的にIDが入力されるようになるのでしょうか?
379 :
anon :2009/05/27(水) 11:44:02 ID:???
>>368 まともな回答が付いてないようなので。
repeaterをネストさせるのが一番簡単だと思うよ。
DataSetとしては、日付をDistinctしたものと、テーブルをそのまま取得し
たものの2つを用意して、2つの間でリレーションを設定。本文を格納した
DataSetに対してはDataViewを設定。
これで階層構造で表示させられる。
>>379 >まともな回答が付いてないようなので。
>>369 ,371は無視か?
それともまともじゃないというのか?
Repeaterのネストは本人も方法として言ってる
簡単かどうかは考え方によるだろうが
データセットにリレーション張ってRepeaterネストさせるぐらいなら、
日付ブレークの判定いれる方が簡単だと思うがな
VWD 2005 Express Editionを使ってます。 GridViewに編集ボタンを付けて実行し 編集ボタンをクリックすると、下記のエラーメッセージが出ます。 「使用されている SQL Server のバージョンでは、データ型 'date' がサポートされていません。」 スタック トレースを見ても意味が分かりません。 何処を直せば、あるいはパッチの追加インストールとか必要なのでしょうか?
どういうデータをどうバインドしてんだよ、こんちくしょうが。
>>378 設定してすぐにテーブルを開くと表示されてるのは、
全部のフィールドがNULLになってると思うけど、
これは新規に行を追加するところだから
何かしらを入力(ID以外のデータ)してenterキーを押して決定すると
新しい行がデータベースに追加され、IDが表示される
>>381 わかんないけど、日付を表示させようとすると、
そういうエラーが発生するんだよ
ソースを表示するとGridView内にタグにdbtype="date"みたいな
表示がかかれてるところがあるから、そのdateをdatetimeにすると
正常に表示される。
編集や削除を許可してるなら、その数のぶんだけあるから
複数修正すること
>>384 できました!なじゃこりゃw
ありがとうございます!バグなんですかねこれって?
DB側の仕様が変わったのについてこれないんだろうぁ
あなるせっくすしたい
すみません。あちこちググってもわかりませんでした。天才様、お願いします。 asp.net(1.1)webサイトAがあります。 これは現在順調に動いています。 アプリケーションルートはwwwrootにあります。 ところが、このサイトを携帯サイトにも対応させようということになり wwwroot直下にmovileというアプリケーションを登録し、元のサイトのコードをすべてコピーしました。 現在はまだここまでで、携帯にhtmlをコーディングし直しているわけではなく、PCで閲覧してテスト中です。 データベースからのデータを得る部分はwwwroot直下の別アプリケーションwevserviceを参照しています。 これはコピー元、コピー先ともに同じです。 ところが、単なるポストバックプログラムは動くようになったのですが、wevseervicceを参照している部分だけ >>System.Net.WebException: 操作がタイムアウトしました。 エラーが出ます。web.configはすべてコピー元と同じ設定にしてあるのですが、movileアプリケーションだけが エラーを出します。 どこかに同一サーバー内の別アプリを区別するセキュリティやタイムアウトの設定があるのでしょうか? ヒント、誘導でもいいのでお願いします。
390 :
nobodyさん :2009/05/28(木) 17:53:13 ID:wAV+Bwsc
すみませんageさせていただきます。レスお願いします。
わかんないけど、単にディレクトリ掘っただけならweb.configまでコピーする必要ないんじゃないのかな IISサービスマネージャ(スナップイン?)で、新たなアプリケーションを追加(仮想ディレクトリの追加?)を 追加して新しいサイトとしてやってみるのは試してみた? どこで処理が止まってるかデバッグで確かめて、 その接続がなんでいかないかを考えたほうが早いようなきもするけど。 あとmovileじゃなくてmobileね
392 :
nobodyさん :2009/05/28(木) 19:08:30 ID:wAV+Bwsc
>>391 ありがとうございます。
web.configをコピーしたのには、将来的にcookieless=trueとして携帯サイトとしてクッキー対策するためと
ログイン画面への遷移を指定するためで、どちらもアプリケーションルートのweb.configのみという制約があるのです。
処理が止まっているのはwebサービスの応答待ちです。
webサービス側はまったくリクエストが届いていない感じです。
サーバー内には目立ったエラーログはありません。
なので、一つ一つ試してみたら? web.configがなかったらどうかとか、 webサービスがなんで動作しないのか、 可能性を一つ一つ試して排除してみるしかないと思う。 asp.net 1.1 とwebサービスの特有の何かしらの症状なら、 あまり利用したことがないから想像がつかないけど。
394 :
nobodyさん :2009/05/28(木) 19:21:36 ID:wAV+Bwsc
>>393 ありがとうございます。
なるほど!テストしてみます!
>wwwroot直下にmovileというアプリケーションを登録し、元のサイトのコードをすべてコピーしました。 >データベースからのデータを得る部分はwwwroot直下の別アプリケーションwevserviceを参照しています。 ああ、別アプリに登録してるのか。 それだと、webserviceが共通で利用できない可能性ってないのかな? 俺が勘違いしてるね。スマン
396 :
nobodyさん :2009/05/29(金) 02:19:51 ID:DlIDf9OB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Debug.WriteLine(Session.SessionID) End Sub ↑のように書いてページにボタンを置いてポストバックしてみると、毎回違う値が出力される。 SessionIDってそういうものなの? セッションIDなんて名前なんだから同一セッションの場合は同一の値が返ってくるものと思ってた。
Calenderを使って日付けを入力することは簡単にできるのですが、例えば TextBoxに「2001/6/1」と入力して、それをカレンダーに反映させるにはどうすればよいのでしょうか? 今月じゃない日付を選ぶ場合、月をクリックして前月、前月と繰り返し再表示させなくてはならず、 年月日をダイレクトで指定し、そのカレンダー上に日付に関連する情報を表示(日付を赤バックにする)し 内容を確認できるようにしたい。 最終的に日付の入力はDropDownListで入力する予定です。
399 :
nobodyさん :2009/05/29(金) 11:09:25 ID:I+rUeGmY
>>395 いえいえ、とんでもありません。
>webserviceが共通で利用できない可能性
やはりことあたりが疑わしいので、webサービスに接続しているアカウントなどを
追ってみたいと思います。
>>398 DateTime dateTime;
if (DateTime.TryParse(this.TextBox1.Text, out dateTime))
this.Calendar1.VisibleDate = dateTime;
>>163 もう解決済みかもしれんが、亀レスしておく。ASP.NET のワーカー
プロセスは以下のタイミングで再起動する。
・Web.config や Machine.config の更新
・bin 以下のコンテンツの変更(アセンブリ)
・*.aspx 等のコンテンツの変更多数
・なんか具合が悪い時(ぴゅう!)
よって、InProc モードを使っているとタイムアウトしていないのに
データが失われるという不可解な現象に悩まされることになる。
これがデフォルトの動作モードというのはもはや犯罪。いくら速くても
データがロストするんじゃね。
ということで、Session に重要なデータ保存するなら、InProc を使っては
いけない。つまり、ASP.NET 2.0 以降を使うべき。ただ StateServer などを
使う場合には Session に格納するオブジェクトに Serializable 属性が必要
になるので要注意。
>>401 レスどうもです。
原因は、
>>241 でして、
どうしようもない状態です。
iis 8007006dでググルと事例は
やたら出るが、対処方がみつからないです。
InProcを利用すべきでない等も
理解しているのですが
変えられない状況です。
InProcでないといけない理由って?
複数部署のアプリが混在している 1つのプロジェクト構造の為、 自部署のアプリのみをソースレベルで 慎重に分離して、StateServer対応の為、 シリアライズの部分を慎重に見直して、 全再テストする工数が莫大だからです。
セッションを他の部署でも使ってるっから自分のとこだけでは変更できないてこと?
あれから18日も経ってるけど解決できてないんだね。ご苦労様です。
サーバの再インストールとかやってみた?
どっちにしても、そのままだとシステムとして成り立たないから、
何が原因か、サーバなのか、プログラムなのか、
結果的に全部署で再テストする必要が出てきそうだね。カワイソス
http://www.google.co.jp/search?hl=ja&q= World+Wide+Web+%E7%99%BA%E8%A1%8C%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A7%E8%87%B4%E5%91%BD%E7%9A%84%E3%81%AA%E9%80%9A%E4%BF%A1%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82+&btnG=
Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
>>402 iis 8007006d でぐぐると、日本語では1件しか表示されない
MSのサポート情報の機械翻訳で日本語があれだが、エラーの原因が書いてある
そこに書いてある対処方法は当然ためしたか、該当しないか確認したんだよな?
407 :
398 :2009/05/30(土) 04:44:22 ID:???
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged 'カレンダーの日付を選択すると、「選択した日付」を表示(確認) lblSelectedDay.Text = Calendar1.SelectedDate.ToShortDateString End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'ページロード初回のとき、「今日の日付」を表示 If Not IsPostBack Then lblToday.Text = DateTime.Now.Date.ToShortDateString End If End Sub Protected Sub btnChandeDay_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles btnChandeDay.Click '「日付変更」ボタンをクリックしたとき、「今日の日付」を表示 Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text) lblChangedDay.Text = txtInputDay.Text '入力した日付をラベル表示(確認) lblChangedDay2.Text = Calendar1.SelectedDate.ToShortDateString '選択した日付をラベル表示 End Sub という感じで作ってみました。 extBoxに「2001/6/1」と入力して、それをカレンダーに反映させる、については >Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text) によって該当月のカレンダーが表示されますが、日付の選択状態が実行されません。 指定した日付を選択状態にするにはどうすればよいのでしょうか?
>>407 >指定した日付を選択状態にするにはどうすればよいのでしょうか?
普通にCalendar1.SelectedDateにセットすればいいだけの気がするんだが、
これって読み取り専用か?
そんだけ動いてるってことはサーバの負荷が大きくなってプロセス再起動してる感じかなぁ… ロードバランサ使って負荷分散するとかしないと厳しそうな気もするけど・・・ 監視ソフトでも入れて負荷みないとなんともいえん
Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text) Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text) ←追加 lblChangedDay.Text = txtInputDay.Text lblChangedDay2.Text = Calendar1.SelectedDate.ToShortDateString >Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text) を追加したら上手くいきました。ありがとう!
>これがデフォルトの動作モードというのはもはや犯罪。いくら速くても >データがロストするんじゃね。 むしろデータがロストしても致命的にならないくらい セッションをできるだけ使わないのがおすすめだけどな。 おれはセッションにはせいぜいリダイレクトの瞬間のやりとりデータしか入れないぜ。
データの受け渡しをするにしても、必ずSerializableなクラスを渡すようにするのがいいね 設計段階で、Selializableな基底クラスを用意して、それを継承したクラスのメンバ変数で 値を持つようにして、それをsessionで受け渡しすればいい。 InProcで問題が発生してStateServerの利用になっても問題無く移行できる。
Serializable属性は継承されません
ん、そうなの? 継承クラスでそのままSerializableできたけどなんでだろう?
>>413 Silializerだと駄目だね
SessionとかだとSerializable属性なしでも通るのか。
知らなかった。サンクス!
416 :
410 :2009/05/30(土) 14:29:16 ID:???
MasterPage上の表の左コラムに、
>>407 ,410で作ったカレンダーを貼り、
日付を選択したら、表の右コラムのContentPlaceHolder1に関連情報(Result.aspx)を表示する。
というのを作成しました。
Server.Transfer("Result.aspx?targetDay=" + Calendar1.SelectedDate.Date)
これで対象となる日付を引き渡し、該当する関連情報を表示するところまでできたのですが
なぜかカレンダー表示がその都度初期値(今日の日付を含む月)に書き換えられてしまいます。
選択した日付を含む年月のカレンダーを表示し、且つ選択した日を選択表示にするには
どうすればよいですか?
417 :
nobodyさん :2009/05/30(土) 14:45:21 ID:yVbH19hK
もう、やりたいこと全部コメントに書いてプロジェクトごとアップロードしたら? 俺は落とさないけど。
よくわからんけどVBって日付の妥当性チェック無しでConvertしても許されたり stringにDateTime突っ込んだりしても推測して型変換してくれるの?
普通にブラウザの戻るボタンで戻ると、ちゃんと日付が反映されてるよ 戻るボタンでもAJAX使ってると今日の日付にもどっちゃうけど ただ単に同じページに戻っただけなら、初めてページを表示させるのと同じだから 表示の日付も今日の日付になってるというのは当たり前の話。 日付を選択して違うページに移動し、再び日付選択ページに戻った時、 その日付を維持したいのなら、セッションかクッキーを使用するか、 GETかPOSTで日付データを渡して値を設定するしかない。
420 :
410 :2009/05/30(土) 16:12:33 ID:???
MasterPage 表左コラム | 右コラム | カレンダー | 該当年月日に属する情報 Calendar.ascx | Result.aspx こんな感じで、カレンダーで選んだ日付に属する情報を表の右コラムに表示する。 Server.Transferを使うことで、選択した年月日の情報を表示することはできました。 ところがResult.aspxが表示された瞬間、Calendar.ascxのカレンダーが初期年月に戻ってしまう。 カレンダー上に、右コラムで表示された情報の日付が選択された該当月が表示されたままにしておいて 同月の前後その他の情報を続けて表示確認したい。 マスターページに共通の見た目のデザインを設定し、この上で Webユーザーコントロールから必要な項目を選択し、Webフォームに見たい情報をデータベース検索し表示する。 みたいなことができるような仕組みを作ろうかと思っています。
マスターページとかめんどくさそうだなw
422 :
nobodyさん :2009/05/30(土) 17:07:38 ID:yVbH19hK
>>422 優しいね
ソース眺めて(・∀・)ニヤニヤしようかな(・∀・)ニヤニヤ
(・∀・)ニヤニヤしようと思ったらVBだからよくわからんかったわw
フォーム認証のメリットって何?ベーシック認証じゃ駄目なん? 認証受けずにページを表示しようとしたら指定のページに強制的に飛ばされる、つーのは 便利だと思うけど。
認証方法はユーザIDとパスワードの組み合わせだけだと思うか?
ベーシック認証に他のやり方があるかどうかわからないけど、 Windowsのアカウントユーザを追加してIDとパスを設定しなくちゃいけないから面倒だからじゃない? apacheとかでも動的に.htaccessとかにユーザを追加管理しなきゃいけなから 面倒だったと記憶してるんだけど。 フォーム認証ならデータベース等を利用して動的にユーザの追加や削除ができるでしょ。
まあ、ASP.NET側で自分で独自に処理してやれば、BASIC認証でも自由にやれる。 けどわざわざやる価値はあんまりないわな。
429 :
410 :2009/06/01(月) 17:45:43 ID:???
>>422 どうもありがとうございます。
MasterPageに複数のWebコントロールを載せて、結果をDefoult.aspxに表示するというコンテンツを作ると、
Sessionを使うと煩雑になるのと、時系列的にPageを切り替えていくのならOKですが、それぞれの
Webコントロール(上のデータ表示)に、同時に反映させるのが難しいかと思いました。
結局、MasterPage画面に配したWebコントロールページに同時にServer.Transferを送ることで
画面上のデータをすべて同期させることができることが解りました。
VIEWSTATEが少し冗長となりましたが。
またアドバイスお願いします。
>>418 int型へのキャストで以下が成立する言語
CInt("+2,7,42,4,6,") = 274246
#全角は入力間違いをしている訳ではない
w まぢかw
参考書で練習問題やってたらAdventureWorksってのが出てきたんだけど 自分で設定汁って書いてあるんだけど、なにこれ?
マイクロソフトが配布してるデータベースのサンプル
質問です。1つのイベントを複数のイベントハンドラに対応付ける事は出来るでしょうか? ネットで探していると 「1つのイベントハンドラを複数のイベントに対応付ける」 というのは沢山出てくるのですが、逆は見つけれません。 そもそも無茶な事しようとしているのでしょうか? 具体的にはボタンがクリックされた時にイベントを2つ呼び出したいといった感じです。
イベントハンドラ内から新しいイベント投げてやればいいんじゃね
>>434 こういうこと?
protected void Page_Load(object sender, EventArgs e)
{
this.Button1.Click += this.Button2_Click;
this.Button1.Click += this.Button3_Click;
}
protected void Button2_Click(object sender, EventArgs e)
{
}
protected void Button3_Click(object sender, EventArgs e)
{
}
ヒント:オブザーバー
デザインパターン使って自分で定義せんでも、.Clickに+=すればいいやんw
>>435 ,
>>436 ,
やっぱそうなりますよね。
javascriptだと、onclick="hoge();piyo();" みたいな書き方が出来た気がするので、
そういう単純な方法無いかな〜と思ったんです^^;
>>437 ,
>>438 ,
そいうデザパタがあるんですね〜勉強してみたいと思います。
440 :
1/2 :2009/06/10(水) 21:06:01 ID:???
質問です コードビハインドで組んでいるのですが、コンテナの使い方がいまいちわかりません csファイル1 public class Jouhou{ private int suuji; private string moji; public Jouhou(int suuji,string moji){ this.〜〜 } public setget〜〜〜 } CSファイル2 public class Dousa{ protected System〜〜.Repeater rpt; private void Page_Load(〜〜){ List<Jouhou> joho=new List<Jouhou>(); joho.add(〜〜); x3とか this.rpt.DataSource=joho; this.rpt.DataBind(); } protected string hoge(string moji){ return moji; } } ascxファイル <asp:Repeater〜ID="rpt"〜〜〜> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem, "moji") %>←正常にLiteralが作成されて、表示される <asp:Literal ID〜〜〜〜 Text="hoge(DataBinder.Eval(Container.DataItem, "moji"))">←エラーが出る(エラーは不明)
441 :
2/2 :2009/06/10(水) 21:09:12 ID:???
つまりRepeaterにはきちんとデータはバインドされていて、mojiとかが正常に以降しているのに、 メソッドに値を送り込もうとすると失敗します。 例えば、 <asp:Literal ID〜〜〜〜 Text="hoge("aaaa")"> とすればきちんとaaaaが返ってきます やりたいことは、repeaterの中のデータを一旦検証メソッドに送って、その結果を返したいです。 どなたかアドバイス頂けないでしょうか?
>>441 なんかこんなんつくってたわ
昔作ったから意味は忘れた
<asp:TextBox ID="TextBox" Text='<%# this.GetColumnData(Container, "Data") %>' runat="server"></asp:TextBox>
protected string GetColumnData(RepeaterItem repeaterItem, string columnName)
{
object columnData = DataBinder.Eval(repeaterItem.DataItem, columnName);
string returnData = "";
if (columnData is string)
returnData = (string)columnData;
else if (columnData is int)
returnData = ((int)columnData).ToString();
else if (columnData is decimal)
returnData = ((decimal)columnData).ToString();
else if (columnData is DateTime)
returnData = ((DateTime)columnData).ToString("yyyy/MM/dd");
return returnData;
}
>>442 ありがとうございます!
さっそくそれを参考にいろいろ調べてみます
すみません。初心者なのですが 皆さんのお知恵をお貸し下さい。 現在、ASP.NETでWEBアプリの勉強をしているのですが SQLサーバーに、バイナリー形式で保存してある 画像を加工してから出力したくて BITMAPクラスを使用すればいいことまでは分かったのですが データベースから取り出した、バイナリーデータを どうやってBITMAPクラスに入れればいいのか、分からず四苦八苦しています・・・ 分かる方からすれば、くだらないかも知れませんが、教えてください。>< Dim image As Bitmap Dim writeStream As Byte() = New Byte(record.Item(0).toByteArray.Length - 1) {} System.Buffer.BlockCopy(record.Item(0).toByteArray(), 0, writeStream, 0, record.Item(0).toByteArray.Length) image = New Bitmap(writeStream) これだとエラーになっちゃうんです><
>>444 //MSSQLからバイナリデータの取得 varbinary(MAX)
TestDataSetTableAdapters.TestTableTableAdapter tableAdapter =
new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter();
TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable();
tableAdapter.Fill(dataTable);
//MemoryStresmにMSSQLから取得したbyte[]データを格納 行が無かった場合のチェックする必要あり
MemoryStream ms = new MemoryStream(dataTable[0].BitmapData);
//Bitmapのインスタンスを生成
Bitmap bitmap = new Bitmap(ms);
//BitmapのインスタンスをImageプロパティに設定
this.pictureBox1.Image = bitmap;
格納する側 //Bitmapインスタンスの生成とbitmapデータの取得 Bitmap bitmap = new Bitmap("test.bmp"); //BitmapデータをMemoryStreamに読み込む MemoryStream ms = new MemoryStream(); bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); //Bitmapデータを格納するTableのインスタンスの生成 TestDataSetTableAdapters.TestTableTableAdapter tableAdapter = new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter(); TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable(); tableAdapter.Fill(dataTable); //新しい行の作成と、バイナリデータの設定 TestDataSet.TestTableRow row = dataTable.NewTestTableRow(); row.BitmapData = ms.ToArray(); dataTable.Rows.Add(row); //Tableの更新 tableAdapter.Update(dataTable);
>> 445 ありがとうございます。 無事解決できました。 本当にありがとうございました
ASPのころ、本当にVBSでできることぐらいしかできなくて苦労したけど ASP.NETになってから、画像も加工できるし、メールも送れるし、FTPも簡単だし、 FileSystemObjectも簡単になってるし、日付計算も簡単になってるしで、 本当に便利になったよね BASP21すげーーーーーーとかいって使ってたのを思い出したよ
レイアウトの自由度のためだけに、一意なレコードしか選択されなくても Repeater使ってるんだけどおかしい? FormViewはHTMLに展開されるときにデフォルトでtableタグが生成されるのが いただけない。ちなみに.net framework2.0限定。 あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。 <HeaderTemplate>だけだとItemTemplateが無い場合、表示されないし・・
>>449 そこまで文句言うならデザイナにでもパネル突っ込んでガリガリループでHTMLとかコントロール突っ込んでいけば?
>>449 Item5個だけのクラスを新たに作って、リピーターに突っ込めばいいだけなんじゃないの?
そんなの自由自在 ASP.NET サーバコントロールプロジェクトで自作でhtmlを生成して表示してもいいし、 ユーザコントロールにLiteralコントロールを設置して自分でhtml出力すればいい >あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。 何行表示されても構わないように設計(デザイン)する必要があるわけだから、 極端に言えば何行の表示でも別にいいでしょ <ItemTemplate>がなければ複数行の動的な生成が難しいんだから一般的には必要ないかと
453 :
nobodyさん :2009/06/15(月) 21:32:48 ID:Ovw0FDNW
Visual Web Developer 2005 Express Edition質問です。 PlaceHolderの中にコントロールをドラッグ&ドロップしたいんですけど、 プレースホルダーを配置して、この上にドラッグドロップしてみたんだけど無理でした。 どうやるの?
たぶんやりたいこととか目的とズレてるような気がするけど、 単にPlaveHolder内にタグを配置したいならデザインビューに切り替えて <asp:PlaceHolder ID="PlaceHolder2" runat="server"> ※ </asp:PlaceHolder> の※の部分にコントロールをポトペタすればコントロールが配置できる でも本来、PlaceHolderは実行時にコントロールを生成するコンテナとしての役割が大きいので、 単に配置するだけとか、配置して一斉に非表示にしたいとか目的なら Panelとか使ったほうがいいと思う。
>>454 ありがとうございます!!!!!多謝です!
デザインビュー上ではやっぱりできないのですね
自分のはFreeのツールだから禁止させられているのかと思いました。
やりたいことは、タブみたいに、ボタンをおしたら、違う画面になる(でも同じWebフォームで処理したい)
みたいな事です。
なので、パネルでやります。
m(_ _)m
>>455 ある特定の一部分だけ非表示にしたり、表示したりするならPanelでもいいけど、
ごっそり変えるなら、MultiViewとViewを使ったほうがわかりやすい
一つのaspxで、入力フォーム→入力確認ページ→実際に登録みたいなこともできるよ
PostBackが仕様のASP.NETだと、そういうのに2枚のaspxが必要だと思ってる人もいるみたいだけど
>>456 たびたびありがとうございます!!!!!
さっそくMultiViewにします!
本番機と開発機でweb.configが違うんだけど、上手い管理の仕方無いかな。 いつか間違えてしまいそうで怖いんだが。
>同じ名前 (Web.config) の複数の構成ファイルを、ASP.NET の
>Web アプリケーション サーバーの複数のディレクトリに置くことができます。
>各 Web.config ファイル内の構成設定 (IIS 認証の設定など) は、
>それぞれのディレクトリ内のソース ファイルに適用されます。
>Web プロジェクトでは、既定の Web.config ファイルの設定に優先する、
>カスタムの構成ファイル (mysettings.config など) を作成できます。
>チーム開発環境では、カスタムのファイルを作成することが必要になる場合があります。
>カスタム構成ファイルの作成が必要となる状況、
>特に共有プロジェクト開発時の必要性の詳細については、
>「Web 参照、Web プロジェクト、およびソース管理の統合」を参照してください。
>Web プロジェクトの場合、ソース管理に追加する必要がある *.config ファイルは、Web.config だけです。
http://msdn.microsoft.com/ja-jp/library/aa290084.aspx とか?
あとは、やったことないけど、 FTPとかでの更新ならweb.configだけ異なる権限にしておいて、 勝手に書き換えられないようにしておくとか、そんなんはできないのかな
>>458 ウチの場合は、web.config.dev とか、web.config.release 等の名前で
複数の web.config を用意している。自動デプロイスクリプトを組んでる
ので、その中でデプロイ先の環境を判別して web.config にコピってる。
まあ、普通だな。手作業はとにかく排除するのが基本じゃね。
462 :
458 :2009/06/21(日) 23:22:51 ID:???
レスありがとう。
>>460 これはちょっと楽そうだ
読み取り専用属性つけて試してみる。
>>461 だね。ちょっと手を抜いて手作業でしてたけど、後々を考えると
しっかりやった方がいいよね。
XCOPYでゴソってやって、最後にweb.configだけ上書きって
流れだけか。
思考停止してたけど、なんも考える事無かったな。
ありがとう。
俺は毎回コピーした後にweb.config手作業で書き換えてる たまに書き換え忘れることもあるがw web.configに設定する内容を、本番と開発で、全く同じにするか、 間違えると動かない設定にしてるので、書き換えないと本番が動かないようにしてる 一番困るのは、書き換え忘れで本番が変な設定で動くことだからな
開発環境と本番環境でweb.configが違うってのは、どういう場合とか? そういうときはディレクトリ分けして、ディレクトリごとにweb.configを統一しといたほうがいいと思うんだけど
>>464 appSettings とか connectionStrings は結構違うでしょ。あとは認証、
ログ設定、例外発生時の挙動なんかも変えたくなると思うけど。
>>465 それってディレクトリごとにかえられになかったっけ?
ディレクトリ毎にweb.configは設定できるはず(やったことない)だけど、
問題はその中身を書き換えなきゃいけない、ってことだと思うんだが。
>>465 が書いてる通りのものは結構書き換えなきゃいけない
と思うんだけど。
UpdatePanel の中にラベルとボタンがあります。 ボタンが押されたら、とある PDFファイル をクライアントに attachment として投げつけて ラベルの文字を「投げたお」と書き換えたいです。(UpdatePanelの更新) ですが、UpdatePanel の中では PDF をクライアントに投げつける、ということが出来ないみたいです。 何か良い策はないでしょうか。 インテルのWebサイトとかでは、ファイルの投げ付け&画面遷移を同時にやってるやつがありますが どんな仕組みなんでしょう・・・(そこにヒントがある気がしてます)
ボタンクリックで新規ブラウザを立ち上げてPDFをダウンロードさせ、 UpdatePanelで表示してあげればいいんでね?
>>471 し、しらんかった・・・
これは便利そうだ。設定変えたいとこだけ全部外だし
出来そうだなー。
結論としては「ディレクトリ毎」っていうのが、実は
「configファイルを分割」っていう意味だったってこと?
だから「web.config書き換えるっていつだよ?」みたいな
話になってたって事?
まぁどっちでもいいが、良いこと知った。トンクス。
configSourceはweb.configと同じく更新が即反映されるので 大抵のもんはappSettingに突っ込んで分離してる
そして今度は外だししたファイルを上書きするわけですね
>>465 それはweb.configの指定を特定のパスに限る設定だろ
今問題になってるのは
環境を設定するファイルがあって、本番のそのファイルを開発環境のファイルで上書きすること
で、
>>471 の方法では、結局上書きする(=書き換える必要がでる)ファイルが
web.configからconnection.config(とか任意のファイル)に変わるだけで
結局上書きしないようにするとか手作業で書き換えるとかする必要がでるんじゃないか、ってのが
>>474 の主張
web.configから任意のファイルになるだけ判りにくくて混乱の元になる気がするぜ
>>476 location要素をプログラムから設定できるんなら
環境(サーバ名とか)によって任意のファイルを指定できるんでないのかなと思って。
お世話になります、自分で独自に作ったクラスをwebサービスの戻り値にするにはどのようにしたらよろしいでしょうか? イメージとしては class 個人情報(){ private string 氏名; private int 年齢; setget〜〜〜 } //個人情報クラスのリストを戻す [webmethod] class 個人情報[] 個人情報リスト(){ List<個人情報> aaa=new List<個人情報>(); aaa.add(new 個人情報(名無し,10)); aaa.add〜〜〜; return aaa; } このような感じで作ってもエラーが出てうまく行きません、独自クラスではなくintやstringといったものなら正常に返せます よろしくお願いします。
479 :
nobodyさん :2009/06/29(月) 19:43:32 ID:uOZzkvvT
以下について教えて下さい。 [やりたい事] 1)登録ボタン押下 2)DB検索 3)フォームの入力データとDB結果をチェック 4)重複データでない場合=「新規登録しますか?」ダイアログ表示 >OK=DB追加 >キャンセル=中止 重複データの場合=「重複してますが登録しますか?」ダイアログ表示 >OK=DB追加 >キャンセル=中止 このような処理を実施させるには、どのような制御を実装すれば良いのでしょうか? [聞きたい事] ・表示するメッセージを上記のように変動させて確認ダイアログを表示したい ・OK/キャンセルの戻り値を取りたい 登録ボタンのOnClientClickに「return confirm("登録しますか?");」を設定すれば 動作すると思ったのですが、上記1)の後に「登録しますか」ダイアログが出てしまい想定する動作になりませんでした。 不躾で申し訳ありませんが、ご教授の程よろしくお願い致します。 [環境] Microsoft Visual Studio 2008 Version 9.0.30729.1 SP Microsoft .NET Framework Version 3.5 SP1 Microsoft Visual Web Developer 2008 VBScript
480 :
nobodyさん :2009/06/29(月) 20:51:34 ID:JEwwWVNF
すでにあるxlsファイルを更新したいんですが、どうすればいいのでしょうか? A*1に1を入れて保存とかそんな感じでお願いします
>>479 JavaScriptでやりたいということだと、かなり特殊なことをしなくちゃいけないので面倒臭い。
なので、可能なら同じページに戻して、新規登録だけど登録していい?とか、重複してるけど登録していい?
というメッセージを表示させて確認を求めるほうが楽。
AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
非AJAXでやるとしたらこんな感じかな。
他に簡単な方法のアイデアがあったら求む・・・
<form id="form1" runat="server">
<asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
<asp:HiddenField ID="HiddenField2" runat="server" Value="0" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
</form>
>>479 つづき
protected void Button2_Click(object sender, EventArgs e)
{
//ユーザによるボタンのクリック DB内を調査して表示する→2回目のボタンを押す
if (this.HiddenField1.Value == "0")
{
//Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
this.HiddenField1.Value = "1";
//データベース内のデータを確認する作業をここでする
//もしyesが押されたらHiddenField2にtrueを、noならfalseを格納する
ScriptManager.RegisterStartupScript(this, typeof(Page), "test", "if (confirm('')) { form1.HiddenField2.value = 'true'; } else {form1.HiddenField2.value = 'false';};form1.Button2.click();", true);
}
//JavaScriptによる2回目のクリック confirmの結果により動作を分ける
else if (this.HiddenField1.Value == "1")
{
//もしyesを押された時の処理
if (this.HiddenField2.Value == "true")
{
//confirmでyesをclick時に行う動作
}
//Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
this.HiddenField1.Value = "0";
}
}
485 :
nobodyさん :2009/06/29(月) 23:19:21 ID:fVwdImLx
全てのページに、URLにuserid=XXXX といった文字列を追加したいのですが アプリの本数が多くて、簡単に追加できる方法ないですかね?
>>485 すべてのページでgetを受け取れるようにしたいのか、
すべてのページのハイパーリンクにgetのクエリを付与したいのか
詳しく書いてくれないと何とも言えない。
でもuseridが変更されるとこまると思うから常識的にはsessionを使うべきだと思う
>>486 説明不足でした。getのクエリ文字列に追加したいのです。
sessionを使うのが普通なのは承知していますが
環境の都合上使用ができないのです。(クライアントのCOOKIEも)
488 :
nobodyさん :2009/06/29(月) 23:42:59 ID:fVwdImLx
また、言葉足らず・・・ sessionを使用ができないのではなく、 sessionだけではなく、GETのクエリ文字列にもパラメータが必要ということでした。
>>488 response.redirectでやると思うが、?userid=xxxxって追加する専用メソッドを入れたらいいんじゃない?
追加メソッド(string url){
return url+="?userid="+this.userid;
}
みたいな感じで、useridがどこにあるのか知らないけど
どなたか
>>478 もお願いしますm(_ _)m
>>489 やはり、その方法しかないですかね?
useridはIIS上で保持しています。
URLに付加された状態でProxyを通過させたいんですよね・・・
(言葉足らずで情報が小出しになってしまい申し訳ないです)
プロクシを通過させると何か問題なの? 俺ならSystem.Web.UI.Pageを継承するクラスUserPageを作成して、 private int UserIDみたいなメンバ変数と public void Redirect(string url,)みたいなメソッドをを作成して urlとUserIDからRedirectさせるようにする んで、そのクラスを継承するページを設定するかな? public partial class Default : UserPage みたいな感じで そうすれば各ページでuseridを取得するルーチンを書かなくて済むし、 現状のresponse.redirectをUserPage.Regirect(string url)に置換するだけで済むし
>>478 public class Person
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}
[WebMethod]
public List<Person> GetPersonList()
{
List<Person> aaa = new List<Person>();
aaa.Add(new Person { Name = "Taro", Age=8 });
aaa.Add(new Person { Name = "Jiro", Age = 7 });
return aaa;
}
でとりあえず動いてるみたいなんだが、どんなエラーなんだ?
半角スペース消えるの忘れてた・・orzスマソ
494 :
479 :2009/06/30(火) 09:14:08 ID:???
>>482 ,484
ご教授ありがとうございます。おおよその動きは理解出来ました。
>AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
AJAXは使っています。
その場合、提示された処理より簡単に実装出来るのでしょうか?
出来ればこちらのやり方も教授頂けると嬉しいです。
>>483 ご教授ありがとうございました。
495 :
478 :2009/06/30(火) 10:15:56 ID:???
>>492 ありがとうございます、新しいページで作り直したら動きましたorz
>>494 AJAXなら、フォームからフォーカスが外れるたびに入力内容をチェックしにいって、
重複か重複でないかをチェックして、ScriptManager.RegisterStartupScriptで
JavaScriptで定義した変数にbool値を格納する
例 var isDuplicate = true;
登録ボタン押下時に、JavaScriptでisDuplicateの変数内容によって、
onSubmitで表示するconfirmの表示文字を変更させればいい。
cancel時にPostの処理を中止するのはどちらも同じだから。
497 :
479 :2009/06/30(火) 17:26:30 ID:???
>>496 ご丁寧にありがとうございます。
482,484を実装し、期待する動作は確認出来ました。
作成しデバッグしている最中にASPの制御、と言うかスタンドアロン(VB)との違いが良く分かりました。
(それにより)496の内容もすぐに理解出来ました。応用させて頂きます。
ご教授頂いた事に感謝致します。
本当にありがとうございました。
MSの開発技術大全のASP.NET編で、SQLDataAdapterコントロールが デザイナにD&Dできるみたいな記述になってるけど、VS2005や2008でも出来たっけ?
>>498 SqlDataSourceとかObjectDataSourceコントロールの事じゃないか
500 :
nobodyさん :2009/07/02(木) 20:39:30 ID:ZUKdZhY7
ASPでjavascriptを使わずにあるボタンを押したら、とあるテキストボックスに1を入力するっていう処理をやりたいのですが、 今まではポストバックさせてやっていたのですが、そうするといちいち画面が切り替わるのがうっとうしいので画面が切り替わらないで処理をやりたいです。 可能でしょうか?
不可
502 :
nobodyさん :2009/07/02(木) 21:15:02 ID:ZUKdZhY7
>>501 ありがとうございます
そうですか、あきらめてjavascript使うしかないですね
1って入力してもらう
504 :
nobodyさん :2009/07/02(木) 21:51:06 ID:ZUKdZhY7
目的は1を入力した状態にしたいのではなくて、テキストボックスをreadonlyにしたいのです。 javascriptで実装するにはどういうコードを書けばいいのでしょうか?
マジレスすると、TextBox.Textに1を入れた後にTextBox.ReadOnlyにtrueを設定
506 :
nobodyさん :2009/07/02(木) 21:59:45 ID:ZUKdZhY7
ポストバックさせたくないんですよ
AJAX使いなよ ポストバックしてるけどしていないような感じで実現できるから
508 :
nobodyさん :2009/07/02(木) 23:48:58 ID:ZUKdZhY7
一番簡単に実装するには何がいいでしょうか? 当方VB、Cの経験しかありません
そろそろスルーで
WebアプリなのにJavaScriptもポストバックもだめとかそもそもが間違ってるよな。 スタンドアロンアプリでも作ってろよ
511 :
nobodyさん :2009/07/03(金) 00:11:41 ID:WYeGS7LZ
しょうがないじゃん、最近はじめたんだから。 radiobutton_checkedイベントやdropdownlist_chengedindexイベントでいちいち画面がロードされるのうざいでしょ?
>>499 いや、SqlDataAdapterだ。俺の目が腐ってなければ・・
ちなみにいまVS2008で試したがグレーアウトでデザイナにはドロップできない。
VS2005ではできるか試してもらえる人はいるだろうか。
グレーアウトになってるってことは使うなってことだよなぁ
手打ちでコーディングはできるんだから。
silverlight使えよ。
>>511 >しょうがないじゃん、最近はじめたんだから。
ブラウザは散々使っているんだろうから、その経験則から何が実現可能か不可能か判断できずに、
最近始めたばかりだと開き直るようじゃあ、あなたにWebアプリは向いてないよ。
↓お好きなのドゾ
Silverlight Flash Ajax ActiveX JavaApplet
>>512 標準ではツールボックスにSqlDataAdapterの表示がないんだが、
どれを参照すれば表示されるん?
>>514 コントロールツールボックスを→クリで「全て表示」とかなかったっけか
>>512 2005は手元に無いからわからんが、2003なら出来るな
データアダプタ構成ウィザードが立ち上がってきた
517 :
500 :2009/07/04(土) 00:48:45 ID:gSOLs+sG
いろいろ調べた結果ユーザーコントロールを使用することにより実装することができました ここって結構無知が多いんだな
PostbackもJavaSciptも使用せずに動的に変更なんてできませんよw
だなぁ、多分ASP.NET自体を新しい概念で開発したんだろうなw その場合.NETって名前そのものが変わると思うけどw
520 :
518 :2009/07/04(土) 01:50:28 ID:???
>>519 無知で結構だから、もし実現できるのなら教えてほしいよ
何を勘違いしたんだろうな。
ユーザコントロールつかってもポストバックはするし。
ユーザコントロールはJavaScriptの実装には不向きだから、
AJAXでも実装したんかな?
ICallBackEventHandlerで勘違いしたに20000000000ジンバブエドル
JavaScriptおもいっきしつかっとるやんw つか、それならAJAX使ったほうが楽でしょ
要は画面が切り替わったのに気付かなければいいんだろ? つ Page.SmartNavigation ASPとASP.NETは別物だからちゃんと区別して書こうな ホントにASP.NETじゃないASPの話だったらスレ違いだがなw
>>517 UpdatePanelで勘違いしたに30000ペリカ
>>523 聞いたことがないと思ったら2.0以降でDeprecatedか
ここ最近みてると、 ASP.NET→JavaScriptの関数の実行(引数引き渡しも含む) JavaScript→ASP.NETのメソッドの実行(引数引き渡しも含む) という需要が多そうだな
527 :
nobodyさん :2009/07/05(日) 11:58:29 ID:Km3uJP2Y
HTMLデザイナの表示をカスタマイズで カラムの幅を狭めると、 デー タバ イン ド みたいになって縦長になってウザイっす。。 なんで「データバインド」なんて意味のない文字列を表示させるのかな。 これを消したいです。なんか方法ありませんか????
データバインドであることがわかるし、 縦長になるとデザイン上の狂いのあることが発見できることもある ウザイときもあるが表示のおかげでデザインの狂いを修正できたことが何度かあるよ 従って一長一短
んなのMSに聞けばいいだろ? ここはお前のVSサポートセンターじゃねえ
このスレの存在意義なくすなよカス
2chで煽るのが僕のレーゾンデートルですw
533 :
nobodyさん :2009/07/05(日) 15:32:32 ID:Km3uJP2Y
GridViewのHyperLinkFieldに対して、2個のSQLのカラムを使って、DataTextFormatStringを作りたいです。 以下のSQLで抽出した2個のカラムを結合した文字列をハイパーリンクに表示させたいです。 select fig_name, fig_number from figure これで抽出できるのはおのおの、 ・fig_name: '図'と'表'のいずれか ・fig_number: 図表番号。数字。 とします。 そしてハイパーリンクにはこの2個をくっつけて “図1”とか、“表2”とかにしたいです。 とりあえず、以下のようにやったけどだめでした。。 DataTextField="fig_name,fig_number" DataTextFormatString="{0}{1}" どなたか、ヒントでも結構ですのでよろしくお願いします。。
>>533 簡単に思いつくのは、TemplateFieldで自前で追加
SQLのクエリで自前で合成したフィールドを作ればいいんでないの
SELECT (Table.fig_name + Table._number) AS fig_fullname FROM Table
とか。
でもこれだとSQLDataSourceが使えなかったり、
GridViewの編集や削除が使えない可能性があるから嫌われそうだけど。
>>534 のTemplaterFieldにしても編集とかできなさげ。
んで、結局、編集、削除、追加は自前で実装して、
どうせ実装するならRepeaterでいいじゃんということに落ち着く流れになりそう。
>>534 ,535さん
ありがとうございます。
RowCreateでデータベースから抽出された結果にアクセスできたので、
そこで文字列をつくって、ハイパーリンクに貼り付けました。
やりかたはダサイかもしれませんが、まぁまだ素人なので。。
ユーザーコントロールのIDを取得したいのですが、どうすればいいのでしょうか?
ClientID
539 :
nobodyさん :2009/07/06(月) 01:25:51 ID:bdwzJZ3p
UpdatePanel凄すぎワロタ。やっぱMSはすげーなぁ。
>>524 おめでとう どうやら君が真のエスパーだったようだ
開発技術大全って.net 3.5以降とかのは出版されてる?
>>516 とかみるとかなり古そうだが。。
開発技術大全は記述されてるフレームワーク関連は古いが、 それ以前のASP.NETのアーキテクチャに関する仕組みを知りたいということなら そんなに色あせないで見ることが出来る。 データベース関連ならADO.NETとLink To Entitiesの本を買うべきだし、 コントロールの使い方ならもっと別の本を買うべき。 それに、どうせいろいろやりたくなると、 DataSet+Repeaterコントロールに落ち着くことになるからね
543 :
nobodyさん :2009/07/06(月) 18:51:33 ID:/VP1pSJi
テキストボックスのIDをascxからaspxに持ってきたいんだけど、string型になっちゃうのは仕様なんですが? textbox型で持ってくることは出来ないのでしょうか? ctypeで変換しようとするとstring型はtextbox型へ変換できませんってでます
無知な俺らに聞いても無駄だと思うが ユーザコントロールを作るということは、新しいクラスを設計するということ。 ユーザコントロールにサーバコントロールを配置するということは、 そのクラスのメンバ変数にサーバコントロール型のオブジェクトを privateのスコープで持つということと同じなので、 ユーザコントロール側で、そのテキストボックスのインスタンスを公開するプロパティを宣言すればいい。 そうすれば、ユーザコントロールに配置したテキストボックスのIDは知る必要がない。 でもそれだと隠蔽の意味がなくなってしまうので、 外からでも変更可能なプロパティだけを ユーザコントロールのプロパティとして再定義して公開するのが普通のやり方。
545 :
nobodyさん :2009/07/06(月) 19:11:22 ID:/VP1pSJi
>>544 つまりどういうことですか?
コードで書いて教えてください
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub
・main.aspx
dim TextName as textbox = name
TextBox.text="Test"
今はこんな感じで書いていてだめになっています
無知だからVBはわからないがC#だと public string Text { get { this.TextBox.Text = value; } }
ああget→setかな すまん無知で
Protected ReadOnly Property name() as TextBox Get Return txtname End Get End Property でいいんちゃうか。
549 :
nobodyさん :2009/07/06(月) 19:41:53 ID:/VP1pSJi
>>548 txtnameだけでIDを送ることができるんですね。
ありがとうございました。
>>548 少なくともユーザコントロールで、所有してるオブジェクトをそのままプロパティで公開するのは止めたほうがいいよ
それは分かってるがID:/VP1pSJiが何をしたいか分からんことには。。
552 :
nobodyさん :2009/07/06(月) 20:16:06 ID:/VP1pSJi
すいません
>>545 がちょっとまちがっていました
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub
・main.aspx
dim TextName as textbox = name
TextName.text="Test"
つまりユーザーコントロールにあるコントロールをaspx側で操作したいというこです
だからコントロールのプロパティをUserControlのプロパティとして公開しなさいっての
554 :
nobodyさん :2009/07/06(月) 20:21:29 ID:/VP1pSJi
556 :
nobodyさん :2009/07/06(月) 22:05:11 ID:Igs6oFx6
質問させてぇ〜 「無効なポストバックまたはコールバック引数です。 イベントの検証は、構成の <pages enableEventValidation="true"/>、 またはページの <%@ Page EnableEventValidation="true" %> を使用して・・・」 っていう糞長いエラーが。。 状況はMultiViewの中のViewのなかのGridViewのなかに配置したTemplateField(イメージボタン) に、 CommandName="delete" OnClientClick="return confirm('削除してよろしいですか?');" ってプロパティ設定をして、ゴミ箱のイメージボタンをおしたら削除されるようにしたわけ。 で、さらにこのGridViewのイベントハンドラを以下のようにしてるわけ。 OnRowCommand = "GridViewMeans_RowCommand" で、このイメージボタンを雄と件のエラーが発生します。。。 そもそもこのエラーって何を意味するの? 「ぽすとばっくやコールバックのイベントが、それをレンダリングしたサーバコントロールから由来するとだめ」 しかもセキュリティの理由から?? 意味が分からない。 意味が分からないから対処方法も想像できない。単にenableEventValidation="false"にすればいいよ、とか 意味も分からず闇雲にトライエラーしたくないし。 だれか、ずばっと、こういうパラダイムがあるから、それを解決するためにこういうセキュリティ上の配慮が必要で、そのために チェックしてるんだ!!!とか男らしい回答求む。
>>557 ご回答ありがとうございます。
するってぇと、何でImageButtonをViewStateに保存しちゃまずいんですかね?
そういうモノだから??
とりあえず試してみました。 変わりませんでした。。 やはりあの、、原理を。。
例えばRepeaterやGridViewコントロールなどのように、 動的に行が生成されるコントロールで、 さらに動的にRepeaterやGridViewなどのような動的に行を生成するコントロールを作成し、 その中でClickイベントを実装すると、その問題が発生するということだったはず。 ページによって存在するかどうかわからないイベントの発生元が存在した場合に、 それを検証する術がないのでエラーになるという感じだったような気がする。 例えばRepeaterの中のLiteralコントロールに、サニタイズをせずに文字列を表示させてしまい、 擬似的にポストバックされるコードを記述されてしまうのを検知するのと区別が付かないとかなんとか。 記事のありかは忘れた。
>>560 おお〜。なるほど!ありがとうございます
分かりません!
でも自分の頭じゃ理解できないってことだけは分かりました。
まぁMFCなんかでもダイアログボックスを表示中に他のタイマーとかのイベントがくると
ダイアログボックスのなかのメッセージポンプがそれを処理しちゃって、
その辺を考えて作らないといけないとか、そんな苦労を思い出します。
要は凝ったフレームワークにありがちな落とし穴って事ですかね。
うーん。困ったw
>>554 ・main.aspx
dim TextName as textbox = CType(ユーザコントロールのID.FindControl("txtName"), TextBox)
これでお前のやりたいことはたぶんできるだろう
これをやるべきじゃないとか何とかいろいろあるんだが、
まあそれは勉強してくれと言うしかない
563 :
561 :2009/07/07(火) 00:48:14 ID:???
いろいろ試行錯誤した結果、TemplateFieldのItemTemplateの中身がLinkButtonだと削除機能は全く問題ないけど、 ImageButtonだとだめみたいです。 ImageButtonにしてEnableViewStateをFALSEにしてもだめみたいです。 なんか、ImageButtonがだめのかねぇ。 もう寝ます。
564 :
561 :2009/07/07(火) 21:59:56 ID:???
海外のサイトあさって回答を見つけたよ。 なんでもGridViewのサーバーサイドのイベントが2回以上起こると発生するらしい。 自分の場合は最初に(書いてなかったけど)RowCreateイベントを使ってる。 そして2回目はボタンをクリックしたときに発生する。 この2回のポストバックにおいて、RowがもってるID(つまりe.Row.ID)が食い違っていると この検証に引っかかるらしい。 (ただのMSのバグじゃねーの??) 自分の場合、最初はRowCreateで、この時点ではe.Row.IDはNULL、たぶんボタンをクリックしたときはなんか値が入ってるんだろうね。 それが食い違っているからだめ〜ってこと。 なんで最初にユニークな値を突っ込んでおけばいいらしい。 つまり RowCreate() { e.Row.ID=Guid.NewGuid().ToString(); } これでOKだった。でもなぜLinkボタンならよいのかは不明。Linkボタンはポストバックじゃないからかな。
1ページに対してイベントは1回だから別に間違ってないだろ それこそ、故意にイベントを発生するタグを挿入される危険性を排除するのが目的なんだから
なんだ、兄さんよく知ってる感じだな。 もっと早く出てきて教えてくれよ。
IDが変わるような操作したあと、databindし直すのが正しい操作じゃないのか?
>>567 たぶんあなたの言っていることは正しい。
javascriptどうすれば簡単に覚えられますか? VBに浸りすぎてぜんぜんわからん
570 :
nobodyさん :2009/07/07(火) 23:57:57 ID:ID58Jon/
.NETではなくASPなのですが、スレがないのでこちらに書き込みます。 DBテーブル上にBASE64エンコードされた画像データ(テキスト)が格納されています。 これをデコードしてresponseで出力したいのですが。。 エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。 デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。 ちなみにBASP21でデコードすると Dim o_buf o_buf = objBASP.BASE64(rsRecord.Fields("Field_name").value, 1) Response.BinaryWrite o_buf Response.End のような感じになりますが、o_bufにバイナリイメージの先頭数byteしか入ってこなかったので、 BASP21は使えないと考えています。 「これぞ王道」のような方法があればお教えください。 いまさらながらASPでプログラムを作成する案件がでてきて、慣れない中苦戦しているもので。。 よろしくお願いします。
>>570 >エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
直接デコードしたら表示できる?
>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ファイル経由にしたらデコードできる?
>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?
>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?
573 :
nobodyさん :2009/07/08(水) 01:35:13 ID:ZNTcUj46
レスありがとうございました。 >>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。 >直接デコードしたら表示できる? >>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。 >ファイル経由にしたらデコードできる? ファイル経由でのデコードはできています。(BASP21利用で) このファイルをビューアで見ることもできます。 サーバ負荷が高くなりそうなので、ファイル経由は避けたいと思っています。 >o_bufにバイナリイメージの先頭数byteしか入ってこなかったので なんで入ってこないの? BASP21の関数利用の結果がそうなっていました。 ここは理由はよくわかりません。。 >「これぞ王道」のような方法があればお教えください。 バイナリのままデータベースに保存できないの? バイナリのまま保存する方法も現在調査中です。 エンコードする方法と、両方を調べている最中です。 どうぞよろしくお願いします。
>>573 モード6と7が対なのはわかるんだけど、
それと、その他のモードに互換性があるのかな
他のは、いわゆるwidestringだけに対応してて、バイナリには対応してないんじゃないのかな。
異なるモード間で互換性がないと意味がないから、
ファイルをエンコードするのに、FSOでファイルを読み込んで、
一度変数に入れてから6と7以外のモードで変換してみたらできるのかな?
aspの質問ですらなく、BASP21の話じゃないか、それ BASP21って専用のスレとかないのか? それか、サポート付きの有償版みたいなのなかったか? BASE64ってそんなに難しい規格じゃないから、 自分でデコードする関数書いたらどうだね
このスレ的には、 FCL使えって感じだけどな
Framework Class LibraryってClassicASPにも存在するの?
ページの名前変えたらものすごい変なエラーが出るようになった。。
ASP.NETは一つ一つのページがpertialクラスになってて、 ページ名がクラス名になってるんだけど、 リネームしてもそのクラス名は変更されないから リネームしたことでページ名が重複しちゃったんじゃね?
>>579 まぁ変え方がまずかったんだと思う。いま一生懸命直してます。
1日1回はローカルでもいいから、別のトコにバックアップとったほうがいいよ データベースがらみとか、アドオンの帳票がらみでわけわからん具合になること結構あるから
よくも悪くもバッドノウハウの固まり
画面上に100個位コントロール(TextBox)が並んでて、Postされた時に一々値を拾うのが めんどくさいんですが。なんか上手い方法無いですかね? 特に、Repeaterで自動生成されたTextBoxとか、IDもサーバで勝手に振られるのでどうして いいのか分かりません。 やりたいこと:Postされた値をなんか上手い方法でDataSetに入れてしまいたい。 DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
>>583 具体的には忘れたけど、こんな感じ
■Repeaterの場合
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
RepeaterItem ri1 = this.Repeater1.Items[i];
TextBox textBox = (TextBox)ri1.FindControl("textBox");
}
■ページにポトペタした場合
Control control = this.Page.FindControl("controlName");
でID名でコントロールが取得できるので、連番で名付けてループさせて取得すればいい
DataSetに格納したい行をClassか、structで宣言して、
ループする度にインスタンスを生成し、IList<T>に格納していけばいい。
別途IList<T>からデータを取得してDataSetに格納するクラスを別途作成す。。
>>583 >DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
使い勝手があれだから、きっと絶対必ず役に立たんがBindというのはある。
例えばObjectDataSourceのConflictDetectionを設定してやれば、
UPDATEやDELETEで指定したメソッドに対して、
変更後の値と変更前の値を自動で放り投げてくれる。
VS2005 + IIS6.0 + IE6.0 or 7.0で開発しております。
DataGrid(GridViewではありません)のヘッダー固定に関しての質問です。
DataGridのヘッダー行を固定しようと思い、ネット上でサンプルを参考にして
浮いているように見えるのですが、とりあえずヘッダー行の固定を実装しました。
参考URL:
http://jsajax.com/aspGridView/Chapter1/ch1-03.aspx ですが、この固定しているヘッダー行が常に最前列に出ているようで
画面上のメニューバーから展開されるサブメニュー項目が、ヘッダーの後ろに表示されてしまいます。
メニューバーはJQueryで作成しています。
参考URL:
http://css-tricks.com/examples/SimplejQueryDropdowns/ JQueryで作成している箇所は、DBから動的に項目を取得して
メニュー自体をHTMLで作成しているので、JQueryをはずすことはできません。
ヘッダー行かメニュー項目のZ-INDEXで解決するかと思ったのですが、
どうも効いてないようで解決方法の糸口が見つかりません。
どなたか詳しい方いらっしゃいませんでしょうか?
jquery.dropdownPlain.jsでz-index記述してみたら
>>587 やってみましたが結果は変わらずでした
固定しているヘッダー行が浮いたような状態になり、
DataGridよりも若干右にズレているのも気になります。
これが問題なんでしょうか・・
メニューを表示させなければうまくいくのか? あと改行してメニューが干渉しない位置にヘッダーを表示させて場合はうまくいくのか? うまくいくのならメニューを表示させたことで、メニューのスタイルシートが、 ヘッダのスタイルシートに悪影響を及ぼしてるんだろうから、 メニューの何が悪さをしてるのか、一つ一つスタイルを削って試して見るしかない
590 :
nobodyさん :2009/07/14(火) 21:55:30 ID:s5DuVBkc
VS2008、C#でASP.netという構成ですが・・・すいません、ビルドの後、プリコンパイルされたDLLというのは何処に格納されるのでしょうか? ASP.net 2.0の、しかもCodeBehind属性を使っているレガシーなアプリをメンテナンスしているのですが、CodeBehindに指定されている.csの内容を修正してもそれが反映されません。 (aspxの内容を修正した場合は反映されています) ビルドしてプリコンパイルすればいいかと思ったのですが、ビルドしても\binに格納されているDLLが更新されないのです。 おそらくどこかに設定があると思うのですが、見つけることが出来ませんでした。 よろしければアドバイスをお願いします。 ちなみに、Webサイトのプロパティの「MSBuildオプション」→「出力フォルダ」は、修正してみましたが特に変化はありませんでした。
プロジェクトフォルダ-releaseフォルダの中かな もしくはdebugフォルダ
592 :
590 :2009/07/14(火) 22:44:54 ID:???
>>591 早速のお返事、ありがとうございます。
が・・・ありませんねぇ、どちらも。
もしかしてプリコンパイルは関係ないのかな? でも、今参照しているbinの中のdll、参照外すと動かなくなるしなぁ・・・。
VS2008のASP.NET2.0ということは、Webアプリでなく、Webサイトだと思うけど、 参照設定で、他のDLLを参照する設定になってない? 普通、通常に使用しているだけなら、Webサイトで作成していてbin以下にdllが 作られることはないと思う。 だからビルドしても、外部参照のdllは更新されるはずがないような気がする。 webアプリだったら、あまり詳しくしらないのでよくわからん。
CodeBehindならWEBアプリな予感 だったらビルドしたらbinディレクトリにあるはずだが WEBサイトならビルドしてもDLLは(見えるところには)作成されない プリコンパイルってVSからできたっけ? というか、参照してるDLLってなんのこと言ってるんだ? そのプロジェクト以外のDLLをBinに入れて参照してるなら、 そんなもんはそのプロジェクトいくらビルドしても変わるわけないぞ
エスパー解答 実はプリコンパイルは関係なくて、 >CodeBehindに指定されている.csの内容を修正してもそれが反映されません。 >(aspxの内容を修正した場合は反映されています) のあたりを詳しく聞く必要があるとみた! .csの内容を修正しても反映されないって、例えば画面の初期化処理だとか、 ポストバック時の処理を変えたりしてみても以前のロジックが走る、 ってことかな? .csを削除してみるだとか、新しいページ追加して確認してみるとかはどうでしょう? プリコンパイルとかWebサイトとかの話はよく分からないので、分かる方お願いします。
597 :
590 :2009/07/15(水) 11:55:15 ID:???
>>593-595 失礼、「Webサイト」でしたね。が・・・。
>WEBサイトならビルドしてもDLLは(見えるところには)作成されない
あれ? もらってきたソース一式に、\binディレクトリがありますけど・・・?
えっと、binにアプリケーション名.dllを放り込むと、VSの方で勝手にそのdllへの参照設定をします。
その参照設定を外すとdllが削除され、「型 '(アプリケーション名).Global'が読み込めませんでした」ってコンパイルすら通らなくなります。
(当然、「デバッグ」→「デバッグ開始」でも動きません)
それで、「ああ、ビルドしてdllを作り直せば、.csへの修正が反映されるのね」と思ったのですが、
「ビルド」→「Webサイトのビルド」ではDLLが作られない/更新されない・・・おや? というところで詰まっているのです。
うーん・・・別に、開発してるときはプリコンパイルなんてしてくれないくていいのになぁ。
598 :
590 :2009/07/15(水) 11:57:39 ID:???
>>596 おっと、すれ違い失礼。ええ、問題になっているところはソコですね。
ただ、
>>597 のような考えで「プリコンパイルされたDLLが更新されないのが問題だよね?」と思ったのですよ。
ちょっとやってみましょう>新しいページを追加
599 :
590 :2009/07/15(水) 12:23:54 ID:???
>>598 ダメですね。「型'アプリケーション名.hogehoge'を読み込めません」となります。
.csを無視してDLLを見に行ってるような感じです。
600 :
590 :2009/07/15(水) 19:32:14 ID:???
お騒がせしました。 結局、.net 2.0を明示的に指定して最初からソリューションを作り直し、そこにソースをコピーして再ビルドをかけました。 何が悪かったんだろう・・・。 ※ツリー部にドラッグ&ドロップでコピー可能、しかも関連ファイルまで根こそぎ持っていくのにはちょっと感心しました>VS2008 とりあえず.csの修正は反映されるようになりましたが、やはりリビルドはしないとダメですね。
>>600 ソースファイルのタイムスタンプがおかしくなってるとか、マシンの時刻がおかしくなっているとか
プロジェクトの何かのファイルのタイムスタンプがおかしくなっているとか…。
たぶん、webアプリケーションと間違えてないか? それか一つのソリューションに、webサイトプロジェクトと、他のプロジェクトがあって、 webサイトプロジェクトから、他のプロジェクトへの参照設定がされてる。 dllは、他のプロジェクトで作成したクラスのdllだからASP.NETの.csを変更してビルドしても 何の変化もないので不思議がってる。 こんなところだろ
現在Visual Studio 2008(VB.net)を使用しMasterPageの中に <div></div>ブロックで囲んだGridViewを配置し、 ヘッダー行を固定しようと、.Freezingのお決まりのCSSを書き GrdiViewHeaderのCSSにそのFeeezingのCSSを指定したところ、 ヘッダー行は正常に固定する事が出来たのですが、 <div>ブロックで正常に width:450pxと指定しているにも関わらずGridViewのヘッダー行(だけ)が その<div>ブロックの幅を右横に突き抜けて表示されてしまいます。 一体何が原因なのでしょうか? ※IE7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 指名 | 年齢 | 趣味 | 経験年数 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A 15 || ↑ヘッダー部分だけが突き抜けてしまう。(ここで趣味・経験年数) B 15 || C 15 || 〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜|
スタイルシートはdivで指定しても、その内側のタグのスタイルの指定で 表現してくれないことがあるから、そのヘッダー行に直接スタイルを適用してみたら? というか、そういう時は、生成されたhtmlのソースをローカルなどにコピペしてブラウザで表示させるなどして、 関係ないhtmlタグを次々と消していって、目的とするタグだけで確認したほうがいいよ。 まったく関係無いと思われるスタイルが影響している場合があるから。 その目的とする表示を構成しているタグだけを残して他のタグをすべて消去し、 それでも問題が発生するかどうか確認するなどして、 他の要素が影響を及ぼしてる可能性をなるべく排除すべき。
>>604 ありがとうございます。
今日会社で試してみます。
>>600 レガシーなって、もともとはどのバージョンで作ってあったんだ?
それはWEBアプリで作ってあったのか、WEBサイトでつくってあったのか?
>>602 俺がエスパーするに、元がWEBアプリだったのを、今はWEBサイトで修正しようとしてる
今修正した部分はWEBサイトなんで、アプリケーション.DLLに反映されない
既存部分はWEBアプリなんで、アプリケーション.DLLへの参照がないと動かない
ソース全部コピーしたってことは、今全部WEBサイトになったんで動いてる
ま、こんなとこだろう
607 :
590 :2009/07/16(木) 16:43:13 ID:???
>>606 そうですね。*.slnファイルも貰ったのでそのまま開いたのですが、こちらで空のwebサイト、webアプリを作成して比較してみると、webサイトの*.slnのようです。
これで開発してる、って言ってたんだけどなぁ・・・。
>>606 その可能性が高そうだね
つかwebアプリをwebサイトに移植しても、そのままで動作するんだな
VS2005は知らんが、VS2008でWebサイトを作成してビルドすると 勝手にbinフォルダが作成されてる。その中にaspxに付随する.csやAPP_CODE配下のクラスファイルが コンパイルされたdllが放り込まれる。aspxのヘッダはこのbinフォルダのdllを見に行くように全て書き換えられる。 別にビルドしなくても、.csのソース付きaspxをWebサーバに配置しても IISとASP.NETは普通に解釈してくれる(まぁビルドするのと同じことしてるんだろけど) 正式リリース時は速度&セキュリティを考えてビルド方式にしたほうがいいよな。。
VS2008のWebサイトで、ビルドしても、リビルドしても、binフォルダもできないし、dllもできないぞ?
>>609 お前の言うWebサイトとは、VSでのプロジェクトの種類としてのWebサイトか?
一般的な意味でのWebサイトか?
一般的な意味でのWebサイトやWebアプリって言葉と
VSでプロジェクトの種類としてのWebサイトとWebアプリってのは別の話だぞ
binフォルダにDLL作るのはWebアプリだ。ソース修正したらビルドしないとDLLに反映されない
WebサイトではDLLは通常見えるところには作られてない。ソース修正したら自動的にコンパイルされ反映される
これを任意のタイミングで指定したところにDLL作らせるのがプリコンパイル
実際のところはWebアプリかWebサイトかは、VSが.ASPXのページディレクティブをどうするかだけで
ASP.NETは各ページの指定通りに動く。なので混在してても動く
>>610 悪かった。ビルド→Webサイトの発行でやってみてくれ
>>611 VSのプロジェクトのWebサイトですよ
それは発行するとプリコンパイルされるだけの話
それぞれのメリット ・Web サイトの発行ユーティリティを使用する利点 プリコンパイル プロセスにより、コンパイル時エラー、および Web.config ファイルと他の非コード ファイル内の潜在的なエラーを検出できます。 ソース コードは、.aspx ファイル内のマークアップを含め、Web サイトから削除されます。 これにより、知的財産を保護でき、第三者がサイトのソース コードにアクセスしにくい状況を作ることができます。 サイト内のページが既にコンパイルされているため、最初の要求時にページを動的にコンパイルする必要がありません。 これにより、ページの初期応答時間を短縮できます。ただし、ページが動的にコンパイルされる場合でも、以降の要求についてはその出力はキャッシュされます。 ・Web サイトの発行ユーティリティを使用する欠点 指定する発行オプションによっては、サイトを変更する際、再コンパイルが必要になる場合があります。 したがって、サイトの開発中、頻繁に変更を加えるような場合にWeb サイトの発行ユーティリティを使用することは実用的ではありません。 Web サイトの発行ユーティリティでは、コンパイル済みサイトをリモート サーバーに配置することはできません。 ローカル コンピュータまたはローカル エリア ネットワーク上の別のコンピュータにのみコピーできます。
>>614 それはMSのコメントなのか?
>Web サイトの発行ユーティリティでは、コンパイル済みサイトをリモート サーバーに配置することはできません。
発行ユーティリティでFTP経由を指定できるんだが、これはリモートサーバとはいわないのか
すまんVWDの話な
「検索」ボタンを押されたときにSQLを実行して実行結果をGridViewに描画させたいです。 SQLは、ユーザが指定した検索条件でいろいろ動的に変えたいので SqlDataSourceのSelectCommandでは対処できないのかな?と思ってます。 そこで、「検索」ボタン押下されたときにポストバック処理の流れで GridViewのDataSouceにArrayとかそんなようなオブジェクトを渡して描画させたいです。 そんなようなやり方でいいんですかね?
>>618 基本的にはそれでいいが、SQL Injectionには気をつけろ
ありがとん
単に検索条件変えるだけでSQL文の構造が変わる訳じゃないのなあら SqlCommand の Parameter 使うとか。
面倒かもしれないけど、自前のクエリ実装と、Repeaterの組み合わせのほうがいいと思うんだけどなぁ
>>622 そんなんわかるほどスキルないもん。
ヒントだけでもいいから教えてください。
>>623 プロジェクトのデータセットを追加して、GridViewにBindするだけ
何かを選択させて条件で表示させたいなら、DataTable.Select("Query")を利用すればいい
>>624 ありがとうございます。
キーワードが増えたのでそれで勉強してみます
>>624 SqlDataSourceなりObjectDataSourceなり
データソースを使わせた方がいいと思うが…。
ページングができませんだの、編集ボタンでエラーが出ますだの言われかねんぞ。
ASP.NETのプロジェクトを作成して、そのなかでSQL ServerのDBに対して「ADO.NET Entities Data Model」 LINQでアクセスしています。 このDBを定期的に掃除するコードを実行したいので、タスクスケジューラから実行できる、 コンソールアプリのプロジェクトを作成しました。このプロジェクトから、↑のASP.NETのプロジェクトを プロジェクト参照した場合、 new XXXXDatabaseEntities() のところで、TypeInitializationExceptionが発生します。 ASP.NET側のプロジェクトのWeb.Configにあった接続文字列をこのコンソールアプリのプロジェクトの App.Configにコピペしてきたのですが、それでは不十分なのでしょうか?
>>627 いま気づいたが、ひょっとしてDLL側にconfigを用意してそこに接続文字列を書かないといけないのか・・。
629 :
627 :2009/07/21(火) 18:40:41 ID:???
解決しました。 ・DllのConfigは書いても無駄 ・App.Configの内容がXXX.exe.configにビルド時にコピーされる この2つを理解していなかったのが原因でした。
>このDBを定期的に掃除するコードを実行したいので、タスクスケジューラから実行できる、 >コンソールアプリのプロジェクトを作成しました。 ストアドプロシージャで作成してSQLのjobから実行したほうがいいんでないの?
631 :
627 :2009/07/21(火) 20:01:58 ID:???
>>630 ストアドプロシージャは書くのが面倒&書き慣れていないので、LINQで書きたいのです。
また、ログをDBに出力するメソッドなどは既に用意してあるので、
出来ればそのメソッドを用いて、DBの掃除をしたときにログを出力したいのです。
ところで、SQLのjobなら定期的に実行する仕組みがIISかSQL Serverかに搭載されているのですか?
うろ覚えですまん MSSQLには定期実行するjobの機能がある。ただしExpress以上。 jobがなくても、SQLCMDだったかなで、別途ファイルに保存したクエリを実行できるから、 これをOSのタスクスケジューラーで実行するという方法もあったはず ストアドプロシージャでも、SQL/CLRを使えば、.NETが使えるから、 Linq To Entitiesも、ログを残すこともできるんでないかな。 .NET3.5でSQL/CLR使ったことないからよくわからん。
633 :
627 :2009/07/21(火) 20:44:49 ID:???
>>632 ああ、SQL Serverにジョブを定期実行する仕組みがあるのですね…。
これは知りませんでした。勉強になりました。
>>631 自分はストアド派だなぁ
その「DBの掃除」がストアド化されていて
後で「ログを出力」という要件が追加になった場合、
ストアドの中だけ弄れば済む。
「後で要件追加(変更)」なんて設計者としては最初から織り込まないといけないと思う。
→ストアド内でログ出力するロジックを追加した方が総工数は下がる
635 :
627 :2009/07/23(木) 13:07:42 ID:???
>>634 > →ストアド内でログ出力するロジックを追加した方が総工数は下がる
それはストアドを駆使して書いてある場合の話であって、ASP.NETでの開発の場合、
ストアド使わずにLINQで殴り書きするほうがインテリセンスも使えて生産性が高いように思うのだが。
つSQL CLR
637 :
627 :2009/07/23(木) 14:25:10 ID:???
>>636 SQL CLRは技術的に見ても面白いテクノロジーですが、
LINQに比べると書きやすさがずいぶん劣るように思います。
コーディングのし易さ、早さ、書きやすさを最大限に追求することで、 プロジェクト全体の保守を含めた生産性の高さが最大になる案件やシステムなら、 そうすればいいじゃんとしか言えない。
639 :
627 :2009/07/23(木) 15:36:04 ID:???
>>638 ああ、ええ、まあ、そうですよね・・。
もう少し生産的な話として・・
LINQで書いたものはCLRに変換されてserver sideで実行されるのですから、
ストアドプロシージャがLINQで書ければ便利な気がするのですが、どうでしょう?
データベーステクノロジの使い分けとかみたいなのが 赤間さんとかの対談の形で MSDN のページに載ってたんだけど 今探したら見あたらないな
641 :
627 :2009/07/23(木) 15:49:30 ID:???
そうそう、それそれ。
分業が必要な規模のアプリの場合、 その複数のプログラマがみんな美しいSQL文を書けるわけじゃないし マニュアル等々で均一化するのも大変 1人のデータベーススペシャリストに 美しいSQL文でストアド作らせてた方が効率いいだろ、と感じる あと、ASPの場合、外部からのハックキングを想定せねばならず データベースへのアクセス権限としてテーブルへの直アクセスを許したくない
仕様変更でDBのフィールドが一つ増えるたびに、 関係するクライアントアプリやASP.NETに記述したlinqをすべて書き直すなら、それでもいいんじゃね? 単一クエリなら問題ないが、1行の操作が他のテーブルに影響を与えるなら、 ストアドプロシージャやビューをフルに活用したほうが、 処理をDB内にカプセル化できるから、仕様が変更されても、 アプリケーションを変更する必要がないし他でも簡単に使いまわすことができる。 その典型例がDBを掃除するコード。 引数が必要ないからアプリ側に影響を与えないし、 ループして複数の行に対して処理するだろうからストアドのほうが高速だし、 トランザクションも明示的に処理ができる。
一つのページで大量のクエリかけなきゃいけないときってどうしてるの? select * from a; select * from b; ... って感じでやって取り込むのがいいの?
646 :
627 :2009/07/23(木) 16:25:09 ID:???
>>643-644 > 仕様変更でDBのフィールドが一つ増えるたびに、
> 関係するクライアントアプリやASP.NETに記述したlinqをすべて書き直すなら、それでもいいんじゃね?
これについてですが、私の場合、DBにアクセスするコードは、サブのプロジェクトを作ってそこに集約させてあるので、
DBのフィールド1つごとに修正する箇所があちらこちらに発生するということはないです。
ただ、ストアドで処理をDB内にカプセル化するという発想やDBのスペシャリストにストアドを書かせるという発想は
私にはなかったので643,644は本当に参考になりました。ありがとうございます。
>>645 取得したいデータによって、動的に取得したいテーブルが変化するとかへんな設計してなければ、
二つのテーブルから合計値を取得するとか、簡単なものなら
クラスにクエリをたくさん記述して、各ページで再利用してる場合もある
ただ、複雑な計算が必要だったり、テーブル数が多くなる場合には、
MSSQL側に、その計算式をまるごとビューとして登録するか、
テーブル値関数として登録してる。
プログラム側では、一つの表として取得できるのでそれを描画するだけ。
648 :
nobodyさん :2009/07/23(木) 16:36:22 ID:FURNmJTN
VS2005(VB)で開発しています ドロップダウンリストを使用してデータを格納しているのですが 画面上からドロップダウンリストを操作した時に、表示される項目の向きが 常に下方向のみ表示できる方法はないでしょうか? ________ [_______]▼ 項目A 項目B 項目C このように表示したいのですが・・・。 現状だと▼ボタンを押して表示されるデータが、リストボックスの中央から 表示されているような状況です 宜しくお願い致します
>>646 それだと、仮にクライアントアプリだと、修正されるたびに、すべてのPCにデプロイする必要があるから面倒
DBの掃除コードはコンソールアプリからだけの実行かもしれないが、
仮にコンソールアプリからでもASP.NETからでも利用したい機能が発生した場合、
一つのプロジェクト内のクラスが変更になれば、両方をデプロイなり発行しなくちゃいけない。
DBに登録すれば、それに関するストアドの修正だけで済むので、
クライアントもASP.NETもコードを変更する必要がないので。
650 :
627 :2009/07/23(木) 17:04:52 ID:???
>>649 ああ、なるほど。クライアントアプリのときはそうでしょうね。
あんまりストアドに頼ると、DBMSを変更しづらくなるのがやだなあ。 よほどの理由がない限り、DBMSへの機能依存を前提とした設計は 避けたほうが無難じゃね?
>>650 コンソールとASPでやってて、SQLを別プロジェクトにしてる時点で、
同じDLLをASPとコンソールの二つからみてるわけだから同じじゃん
異なるバージョンのDLLで稼働してるのが気持ち悪くない人なら別にいいけど。
>>651 DBそのものの変更の可能性を考えるのなら、
使用言語が変更しづらくなる可能性も考慮しなきゃw
ストアドなら、そこにアクセスして操作できる言語なら
言語に依存せずに利用することができるとも言えるw
653 :
627 :2009/07/23(木) 17:25:10 ID:???
>>652 > 同じDLLをASPとコンソールの二つからみてるわけだから同じじゃん
サーバーサイドだけならdeployする手間が、普通のクライアントアプリとは違うので
>>649 の「それだと、仮にクライアントアプリだと、修正されるたびに、すべてのPCにデプロイする必要があるから面倒」
という問題は無いかな、と思いました。
> 異なるバージョンのDLLで稼働してるのが気持ち悪くない人なら別にいいけど。
この部分がいまひとつ理解できていないのですが、私の構成は次のようになっています。
コンソールプロジェクト = DBの掃除を行なうコードを書いたプロジェクト(A) + DBへアクセスするためのサブプロジェクト(B)
ASP.NETのプロジェクト = 普通のASP.NETのプロジェクト(C) + DBへアクセスするためのサブプロジェクト(D)
上の B = D で、これはどちらも同じバージョンのDLLなのですが・・。
>>653 別に、あなたのやり方を否定してるわけでも、自分のやり方を推奨してるわけじゃなくて、
相反する考え方があるという事なんで、あくまで一般論の話ね。
どんな想定かわからないけど、複数のものを変更しなくちゃいけない場合、
その時点で変更し忘れ等のミスが発生する可能性が高まるということ。
例えばwebサーバが複数あるとか。
>上の B = D で、これはどちらも同じバージョンのDLLなのですが・・。
ASP.NETのプロジェクトの開発で何か変更になったとき、
サブプロジェクトDのDLLを変更するのはいいけど、
その時点でBに反映させなければ、異なるバージョンの物でそれぞれが動作している
という気持ち悪い状況になるでしょ。
そういうやり方をしてるなら、Dが変更されたら、変更されたDLLをBとして反映する
必要があるから、結果的に複数のものを変更する必要があるんじゃないの?という話。
BとDが異なるバージョンのDLLで動作しているのが気持ち悪くない人というのは
そういう意味。
655 :
627 :2009/07/23(木) 18:10:04 ID:???
>>654 ああ、なるほど。意味がわかりました。
> その時点でBに反映させなければ、異なるバージョンの物でそれぞれが動作している
> という気持ち悪い状況になるでしょ。
確かにそれはそうですね。
私はdeployの作業自体はスクリプトを書いて自動化してあるのですが、そこに書き忘れたら、
というのはありますね。
というか、Linq To SQLは終了の方向だから、 EntityFrameworkのほうで頑張るしかないな
>652 DBMSは導入先の環境・都合で変わりうるでしょ。開発言語に関してはそれはまず有り得ない。 大体、「開発言語を変更しろ」なんてのは事実上「1から作り直せ」と同義なんだから、 ストアド部分だけ流用できたって、たいして嬉しくないよ。
DBMSが具体的に何を差してるかわからんが、 データベースのソフト(MySQLたのOracleだのMSSQLだの)を差してるなら、 導入先の環境、都合でこれらがそんな頻繁に変わるか? データだって移行せにゃいかんし、 そもそもクエリだってデータベース間で関数名や、その引数なんかに違いがあるんだから、 言語が統一ならどんなDBであってもまったく変わらないなんて完全な錯誤だと思うんだけど。 あるシステムでデータベースを異なる製品に変更しろなんて要求があったら、 1から作り直すのと同じだと思うし、あまりの仕打ちにそれ以上に腹が立つわw
いつだってフルスクラッチ大好きな俺は大歓迎だ! ただし、金と時間はくれよな!
ASP.NETで開発しています。 JavaScriptで使っているデータを1日1回、DBから生成して .js ファイルとして書き出しておくことを考えています。 その .js ファイルを IIS7でホスティングすることになるのですが、 「DBから生成して .js ファイルとして書き出しておく」ときに、テンポラリに書き出して、 .NET FrameworkのFile.Copy(src , dst, overwrite = true)で前のファイルに上書きしようと考えています。 ところが、このファイルの書き出し中にこのファイルをクライアントブラウザから要求されて IIS7が読み込もうとしたとき、コピー中の中途半端なファイルがクライアントブラウザに渡されます。 この挙動は望むものではなくて、出来れば、コピー前の古いファイルか、コピー後の新しいファイルかの どちらかをクライアントブラウザに渡して欲しいのです。 これはIIS7の設定で解決するのでしょうか?それとも、File.Copyを使うのが良くないのでしょうか?
rename してからコピーして rename コピー中はファイル存在せず
いや、少し違うか hoge.new で予め作っておく hoge.js → hoge.bak にリネーム hoge.new → hoge.js にリネーム hoge.bak を削除
>>660 javascriptって.jsしか無理なんだっけ?
自分なら.jsファイル(もしくは変更されるデータ)をデータベースから取得し、
アクセスがあるたびに動的に生成するな
ファイルを作成するプログラムが、バッチ処理の役割も果たしていて、
日に1回の集計処理を行ってるとすると、若干厄介かもしれないけど
664 :
660 :2009/07/24(金) 18:02:37 ID:???
おーNTFSでファイルのトランザクションができるのかw 同じ.jsだとIEでキャッシュ扱いされそうな気がするんだが、その辺はどうなんだろ レポート頼む
666 :
660 :2009/07/24(金) 19:23:06 ID:???
>>665 > 同じ.jsだとIEでキャッシュ扱いされそうな気がするんだが、その辺はどうなんだろ
それはIISのファイルのexpireの設定次第だと思います。
へーその都度、生成されるaspxでも?
668 :
660 :2009/07/24(金) 20:25:23 ID:???
669 :
nobodyさん :2009/07/24(金) 22:19:14 ID:1HXeI2xc
生成し終わったファイルをコピーして別のファイル上書きするだけなら そんな問題おきなさそうだけどなぁ。 ファイルシステム書き換えるだけでしょ。 Windows の Copy コマンドとか使えないのかな。
670 :
660 :2009/07/24(金) 23:37:28 ID:???
>>669 > 生成し終わったファイルをコピーして別のファイル上書きするだけなら
> そんな問題おきなさそうだけどなぁ。
起きます。System.IO.File.Copyでコピーした場合、ファイルコピーが開始されると
同時に、クライアントブラウザへの古いほうのファイルの転送が中断され、
結果として中途半端なファイルがクライアントブラウザに渡されます。
WindowsのCopyコマンドというのが何を指しているのかわかりませんが、
DOSプロンプトのcopyコマンドのことでしたら、これと同じ挙動のようです。
671 :
nobodyさん :2009/07/25(土) 01:29:42 ID:WtyVOn10
>自分なら.jsファイル(もしくは変更されるデータ)をデータベースから取得し、 >アクセスがあるたびに動的に生成するな うわ、死んだ方がいいなこいつw
>>671 なんで?
それが駄目ならデータベースからデータを取得して、
動的に中身を生成するasp.netの全否定になると思うけど?
ASP.NETの動作にDB接続が必須だったとは初耳だ
ストアドってよく使われるもんなの? 個人的には全部ソースで作ればいいじゃんと思うんだけども。
>>673 データベースからデータを取得してhtmlを生成する仕組みで動作してる
aspx全般のことを言ってるのに、asp=db必須なんて言うのは論理のすり替え
>>674 ストアドに限らず、viewやテーブル値関数、トリガーを含めてなら便利だし、結構使う
問題なく動作してるなら、別にソースからでもいいんじゃない?
メリットはデータベースを一つのオブジェクトとみた場合、データの操作はデータに近いところで行うという、
可能な操作や状態のみ閲覧でき、実装を隠蔽できるOOPのメリットと併せて考えればわかりやすいと思うけど
あとは複数クエリの実行なら、ストアドのほうが処理が速いということかな
ASP.NETとはいえ、DBとWEBサーバは別だろうから、DB-WEB間のネットワークトラフィックを最低現にできるメリットもある
>>675 んじゃーお前は何でもかんでもDBに突っ込んで毎回取りに逝けばいいよ。
678 :
nobodyさん :2009/07/25(土) 08:21:37 ID:BV/bwvMa
俺頭悪いから
>>675 からなんで
>>677 な意見が出るのか理解できない…。
>>673 はまぁ極端ではあるけど
>>672 の文章自体誤解を受けかねない部分はあるからまぁ仕方ないのかなって気はするけど。
まぁでもなんかとにかくかみつきたくてかみついてるような印象はあるか。
>>671 はjs「ファイルを動的に生成」ってところに
突っ込みたかったんだと思ったが…
>>664 どこまで極めないといけないのか知らんが
js ファイルを作成する都度、別ファイル名にして、
aspx 側で食わせる js ファイル名を動的に変更させたらどう?
681 :
sage :2009/07/27(月) 10:06:33 ID:???
TextBoxにもLabelにもなるユーザコントロールって作れないんスかね? ReadOnlyのプロパーティをtrueにすればLabel、falseにすればTextBox、みたいな。 TextBoxを変更不可にするんじゃどうしても見た目的に駄目なケースがあるんで。
682 :
nobodyさん :2009/07/27(月) 10:34:22 ID:lA2VJ4lQ
動的にコントロール追加すればいいんじゃないの
Repeaterでテキストボックスを動的に生成しています。 ボタンが押されたら内容をチェックして、何らかのエラーがあればエラーのあったテキスト ボックスの背景色を変えたいんですが、方法が分かりません。 テキストボックスは動的に生成しているので、 プロパティで変更することも出来ないみたいで。
>>681 TextBoxとLabelを配置したUserControl作って、ReadOnlyプロパティとTextプロパティを作って、
TextBox.Visible = !ReadOnly Labe.Visible = ReadOnlyすればいいじゃない
>>683 public List<TextBox> TextBoxList = new List<TextBox>();
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
RepeaterItem ri1 = this.Repeater1.Items[i];
TextBox textBox = (TextBox)ri1.FindControl("TextBox1");
TextBoxList.Add(textBox);
}
}
あとはお好きにどぞ
>>685 683は、validationをclient-sideで行なって、かつ、TextBoxとLabelとの切り替えもclient-sideで
行ないたいということなんじゃない?
まあJavaScriptで書くしかないわな・・。
ASP.NET、client-sideで処理するためのtool setが用意されていないので
何かとJavaScriptを書かないといけなくて面倒なんだな。
このスレの
>>200 近辺にあるjQueryを使えば大丈夫
>>687 何がjQueryで大丈夫なのかは知らないが、
あまりにjQueryとの親和性が悪いので
ASP.NET4.0ではjQueryを統合するとか何とか。
×あまりにjQueryとの親和性が悪いので ○ASP.NET AJAXがあまりにjQueryとの親和性が悪いので
>>686 UserControl、ReadOnlyプロパティから考えるにサーバコントロールじゃないの?
そもそもClientでValidationを行うのが間違いだし
超簡単にやるなら、こんなでいいんじゃない。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Label ID="Label1" runat="server" Text="Label" Visible="False"></asp:Label>
public partial class WebUserControl : System.Web.UI.UserControl
{
public bool ReadOnly
{
get { return this.Label1.Visible; }
set
{
this.Label1.Visible = value;
this.TextBox1.Visible = !value;
}
}
public string Text
{
get { return this.Label1.Text; }
set
{
this.Label1.Text = value;
this.TextBox1.Text = value;
}
}
}
>>690 > そもそもClientでValidationを行うのが間違いだし
何故間違いなの?余計なトラフィック増やしたくないから、まずclient-sideで行なって、
サーバーはサーバーで再度validationを行なうのが常識でしょ。
>>691 >何故間違いなの?
ああ正確にはClient「だけ」だな 言葉足らずですまんかった
>余計なトラフィック増やしたくないから、まずclient-sideで行なって、
>サーバーはサーバーで再度validationを行なうのが常識でしょ。
入力内容をポストしてValidateするのと、JavaScriptでチェックするのの、
どちらが容量が少ないかだけの観点なら、失敗される予想回数と、
Postされるデータの容量と、Validationに必要なJavaScriptの容量が関係するから、
一概にClientでチェック=トラフィックが低いとは言えないけどね
>>692 > 一概にClientでチェック=トラフィックが低いとは言えないけどね
ああ、なるほど。トラフィックという観点ではそうだね。
実際は、ASP.NET ajaxでも、アクセスされるごとにサーバー側では
モデル等を再構築するのでアクセスごとのサーバーの負荷は並々ならぬものがあるので
なるべくならclient-sideで、というのは信念としてあるわけだけど。
>>671 動的生成したjsの内容をいキャッシュしとけばいいよ。
ってか良くやる方法だよ。
あんまりキャッシュとか活用されないことが多かったりするけどね。
クライアントサイドの検証コードなんてほとんどキャッシュされるから、 実質的にはクライアントでも検証を行う方が有利なことが多いんじゃないかと思うけどね。
>>694 の続き
jsファイルでやりたいなら、ashxハンドラなどで、ファイルを読んでキャッシュして
リクエスト時にはそれを返す方法でもいい。
ファイルの更新時刻を見て、例えば一秒以内程度なら前の結果を返すとか自由に制御できる。
>>695 そこらへんまで行くと、完全に実装にかかるコストやなんやらとのトレードオフ
ISDNとか56kモデム全盛の時代は帯域が狭いから、
トラフィックも考慮されてたけど、今じゃよほど特殊な環境やページでなければ
トラフィックを気にして設計することなんかほとんどない
その証拠に、画面を描画するcssも、よくあるライブラリを記述するjsも、
必要な部分だけincludeしてるわけじゃなく、サーバに対して1つだけを設定してるだけでしょ
さらに言えば、今時、JavaScriptで入力チェックしてるサイトも少数派になってる
どうせ両方に実装するのならJavaScriptのほうは不必要という考えもできるからね
698 :
nobodyさん :2009/07/28(火) 02:26:18 ID:FCPdlHYK
ASP.NETのValidatorが自動生成するスクリプトでのチェックならいいが、 自力でScriptをゴリゴリ実装するのは後で他人が多大なる被害を被るのでやめてくれ。 んなもんサーバ側でやればいいだろーが。
前任者のソースに__doPostBackを 自前の関数から呼んでるのとかあったな
つーか、client側にゴリゴリ処理を書くとか、むしろアリエネーとか思うんだが。 そんなの、いくらでもエンドユーザが改変可能じゃん。 原則は、全部のデータをサーバに丸投げして、あとはサーバ側でチェック。 仮にclient側のjavascriptでチェックしてても、全く同じチェックをサーバ 側でも再実施。だったら実装の手間隙考えて、微々たるトラヒックの事なん か気にしない。(=clientではチェックしない)
なんでajaxが出てきたと思ってる ってまあ言いたいことは分かってるんだけどな
702 :
Appri童貞 :2009/07/28(火) 17:08:04 ID:sYPKb5BW
エラー発生アプリケーション xxxxxxxxxxxx.exe、バージョン 1.0.0.0、 エラー発生モジュール kernel32.dll、バージョン 5.2.3790.4480、 エラー発生アドレス 0x0000bef7 こんなログ出た人いますか?
>>702 聞く前にぐぐれ
kernel32.dll 0x0000bef7 5.2.3790.4480
でぐぐったら、1つ目のリンクにSystem.OutOfMemoryExceptionがどうとか書いてあるぞ。
704 :
Appri童貞 :2009/07/28(火) 17:33:53 ID:sYPKb5BW
ありがとう^^
死ね
むしろ生きろ
707 :
nobodyさん :2009/07/29(水) 03:14:53 ID:S6cUwBjX
>>699 ゴメン、今のプロジェクトで __doPostBack 書いてる。
クライアントスクリプトからポストバックする方法って普通になかったっけ? 別に問題ないと思うけど
ASP.NET2.0以降ならICallBackEventHandlerで出来るな。 しかしだからって、__doPostbackを自前で呼ぶことが許容できるかというと微妙。 十中八九、代替する方法があるだろうしな。
リンクをcssで無効にして、Scriptでクリックすることにするという方法が簡単らしいね ClientScriptで動作させることが前提の非ビジュアルコンポを作ったら楽かもしれない つか、ICallBackEventHandler試したことないから、やってみようかな
MaskedEditExtenderについて、教えて下さい。 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" runat="server" InputDirection="RightToLeft" Mask="99,999" MaskType="Number" TargetControlID="TextBox1"> </ajaxToolkit:MaskedEditExtender> と設定されたテキストボックスに、1を入力してポストバックなりすると 100,000と変換?されてしまします。 Mask="9,999" でもダメでした(1,000になってしまう) しかし Mask="999999" やMask="9,999,999"では問題ありませんでした。 これは何かの制限でしょうか?
712 :
nobodyさん :2009/07/30(木) 01:45:47 ID:6Jkou0XR
__doPostback実装してもいいじゃん。ダメな理由って何がある?
ServerControlの配置と、自分で記述するClientScriptの相関関係がまったくなくなるのが問題と言えば問題
まったくなくなるかどうかはクライアントスクリプトの実装次第だと思うが コールバックとポストバックは似て非なるものだから どうしてもポストバック使いたいときもあるだろう つか1.1まではそれしかなかったしな ダメな理由はない まあ、見通しが悪くなることが問題といえば問題 だがそれはコールバックでも同様
コントロール名を変更しても、JavaScriptのほうまでは変更してくれないでしょ だから相関関係が無くなる
それは最初からJavascriptが間違ってるだろ。
>>712 もちろん最終的には開発者の自由なんで、あくまで俺の見解として。
まず、前にも書いたがそんなことをしなくても
十中八九、正攻法で解決できると予想される。
また、他に方法がなかったとしても、
果たして裏道を使ってまで解決する要件か疑問が残る。
次に、そのような組み方は「らしくない」と感じる。
極端な例えだが、Responce.WriteでHTML出力してたり、
GridViewに仕込まれた無数のhiddenを見ている気になる。
最後に、フレームワークを使っていて、
ハッキング(裏道の利用)に手を染めたら負けかなと思ってる。
>>716 違う
最初は正しかったが、IDEでaspxの何かを変更をすることで、
結果的に間違ったものになったということ
基本的にIDEの機能や本来のやり方と無縁だからこうなる
>>715 それはスクリプトでIDなんかをハードコーティングするから悪い
スクリプトをサーバコントロールで動的に生成して出力するようにすれば
サーバコントロールとの関係は崩れない。これがAPS.NET流じゃないかな
まあ、__doPostback直接書くのはお勧めじゃない。GetPostBackEventReference使えと
.aspx側(html側)にスクリプト書いたとしても、動的に変更する必要があるところは
実行時バインド式で書いとくのが通常
>スクリプトをサーバコントロールで動的に生成して出力するようにすれば これが読みにくくて判読しにくいんだよな そもそもサーバサイドスクリプトがcsに書かれてるのも違和感だし うまく解決できないものか
aspx側に書けばいいじゃん。
ASP.net 2.0 なんですが、GirdViewの「編集」(正確には「更新」)のイベントハンドラを独自に記述する方法はあるでしょうか? GridViewによるマスタメンテを実装しているのですが、GridViewはEnableViewStateをfalseにしないと更新が出来ないそうですね。 現在、ロジック側でConnectionStringを設定するつくりになっているので、EnableViewStateがtrueでないと動かないのです。 ということで%一行目%しかないかと思ったのですが、どこか参考になるURLなどご存知の方がいらっしゃれば、ご教授いただければ幸いです。 よろしくお願いします。
>GridViewはEnableViewStateをfalseにしないと更新が出来ないそうですね。 そうなの?初めて聞いた。 >ロジック側でConnectionStringを設定するつくりになっているので、EnableViewStateがtrueでないと動かないのです。 そうなの?これも初めて聞いた。
ゴメン、意味が分からない。 同じ環境でGridViewから更新処理してるが、EnableViewstateはTrueのままだぞ。 あと編集処理は通常CommandNameがEditであって、 更新はUpdateだから同じものでも無いはずなんだが。 まぁイベントハンドラならOnCommand辺りでフックすればいいんじゃないか。 と、ここまで書いて思い付いたが、 もしかしてObjectDataSource等をかまさずに 直接DataSourceにオブジェクトを割り当ててるとか?
今テストしたけど、GridViewのEnableViewState=trueで更新できるな VS2008+MSSQL2005
エスパーすると IsPostBackがtrueの時にDataBindするとイベントが発生しないということと、 ポストバックしてEnableViewStateがtrueの時だと、 取得時のデータと異なる可能性があるというデータの整合性や楽観的ロックの 関係とごっちゃになってるような気がする。
727 :
722 :2009/07/30(木) 23:43:56 ID:???
>>727 >というと、これはガゼ?
それは、GridViewにデータをバインドした後に、誰かがデータを変更した場合の話
初回アクセス時にデータを取得し、それ以降はサーバとブラウザの間でポストバックして、
データを持ち回りしているので、その間にデータベースのデータが変更されても、
変更されたデータとして反映されないということ。
>初回は動くんですが、ポストバックするとConnectionStringが元に戻ってしまうらしいんですよ。
そう考えるとConnectionStringが元に戻るんじゃなくて、表示されるデータが戻ってるだけでは?
ConnectionStringをLabelなどに表示してみて、本当に変わっているかどうかチェックしてみたほうがいい
729 :
728 :2009/07/31(金) 00:08:52 ID:???
ああ、ごめん上のレスは却下 System.ArgumentException: 無効なポストバックまたはコールバック引数です。 の理由にはならないね ただ、ポストバックで特殊なことをしてなければそんなエラーはでないから普通は関係ないはず
730 :
nobodyさん :2009/07/31(金) 00:14:03 ID:dsR5PDEA
ASPでデバッグモードの時のみコードを実行させることってできます? C#でウインドウアプリ作るときはプロジェクトの設定して Conditional属性つければ、デバッグ時のみコードを実行させることが できますが、同じようなことをASPでできないものでしょうか? #if DEBUGでの切り分けはあんまり使いたくないなぁということで・・・ 属性じゃなくても、似たようなことができる方法教えてもらえると助かります。
731 :
730 :2009/07/31(金) 00:16:46 ID:dsR5PDEA
あ、失礼しました ASP.NETです 言語はC#です
>>720 >そもそもサーバサイドスクリプトがcsに書かれてるのも違和感だし
クライアントサイドの間違いじゃないのか?
サーバサイドのスクリプト(プログラム)が.csに書いてあるのは普通だろう
そのために.aspxと.aspx.csに分離してあるんだから
まあ、サーバサイドとクライアントサイドのコードが混在すると
読みにくくて判読しにくいのは同意するが、これはWEBアプリの宿命的な部分もあるしな
ASP.NETな開発で考えると、そこはコントロールの作成者が苦労すれば、
その利用者は何も考えなくてよい、ってことなんだが...最大の成功例はAjaxToolkitか
実際はカスタムコントロールなんて作らんとページロジックに書く場合がほとんどだろうし
作ってもコントロール利用者=コントロール作成者な場合が多いからなw
VS2008SP1のセキュリティがあたらねぇ WindowsUpdateはクソだな
734 :
nobodyさん :2009/08/01(土) 09:06:35 ID:7MJE4N/J
mvcは要らない子
海外ではMVCに移行してきてると思うけど 携帯向けのことも考えるとMVC以外あり得ん
ASP.NET for Mobilesはやれば出来る子
ASP.NET MVCちょっと使ってみて、やべー、使いやすい! って俺は思ったんだが。 他のフレームワークでのMVC開発全くやったことなかったし。
コードビハインドで事足りる MVCならResponse.Writeで全部はき出すのとそんなに変わらん
今更Web Forms vs MVCみたいなこと言ってんのかよ
ASP.NET MVCはLAMP対策。 それ以上でもそれ以下でもない。
使いやすい云々よりjQueryフレンドリーなのが大きい
苦肉の策って奴だなLAMP方式
744 :
nobodyさん :2009/08/01(土) 22:28:24 ID:Xxdx6Cb4
ASP.NET MVCは単テがしやすいとか聞いたがそうなの? 今までのASP.NETでは、まともに単体テストやろうとしたらかなり面倒だよね。
つVisual Studio Team Edition for Software Testers
746 :
nobodyさん :2009/08/02(日) 16:46:34 ID:Ql7mD23J
↑ これは便利だね
昔のASP?
っつーかマルウェア検出されるんだけど
画面が重いとかクレーム付けられてンだけど、画面上にLabelとTextboxが5マンコも載ってりゃ 当然だろ常考。こっちは設計書に忠実に実装してるだけですが何か。 ページ切り替えとかの実装を要求されるンかなぁ。 更新系の画面でページ切り替えとか、考えることが増えてマジウザイんだけど。
5万項目も入力&入力チェックする人間も大変だな
Label+Textbox合わせて最大5マンコ位なんで、Textboxだけなら2マンコ位です。 横方向にTextBoxが40×Repeaterで500ループ、なので入力チェックの実装はそれほど大変では ないのですが、、、 実際に運用した際の入力の手間については考えていません。
そういうのはグリッドで設計すべき
text二万個分のViewStateやらポストやらとか考えたくもない でも設計に口出ししなかったんだから仕方ないな
ちなみに何を入力させてんの? それがわからないと最適解はわからんよね NDAとかで具体的に話せないなら、似たような事例で
>>754 グリードってGridView?あんまりGridViewを用いるメリットが思いつかない・・・
ちなみに、サンプルに良くある「行毎にある編集ボタンを押して編集モード、編集が終ったら行ごとの更新ボタ
ン押下で再び参照モード」 って挙動は駄目なんで。
ユーザはあくまでExcelへの入力のごときフィーリングを求めてるみたい。
>>755 詳細設計から参加だから、もうどうしようもなかった。
ポストは、xmlに定義した内容を見て、Request.Paramsを分解してDataSetに突っ込むっていう部品を作っ
たんであまり気にしてません。VIEWSTATEは・・・Sessionに突っ込んでるけど、恐ろしいサイズになってそう。
>>756 顧客情報。
1営業担当あたり500人程度を想定してるんで。
わかりにくかったらすみません repeater全体にlinkbuttonつけたんですが、 そのどこかの行をクリックするとその行だけ詳細パネルが開いて、他の行もそのまま表示ってしようとしたところ、 パネルは開いたのですが元々あった一覧行が消えてしまいます 何が原因だと思いますか?
Excelのごとき入力をしたい画面をWebでつくるという腐った提案ナイスだな。 Excelでいいじゃんって言ったらしばかれそうだなw
>>757 どういう契約関係かわからんが仕様書段階で忠告があってしかるべき仕様だよな
仕様通りつくって運用上の問題が発生したのなら、当然、別料金で作り直しでしょ
仕様の設計者が社内の人間なら、泣く泣く作り直すしかないね。
設計者に飯でもおごってもらえw
それはともかく、初めからマトリクス状に500行あるってこと?
それともユーザを追加していくうちに最大で500行まで増えそうってこと?
前者なら設計が最悪、後者なら20行ごとにページングするしかないね。
各行ごとに編集や削除ボタンを設置しておけば、表全体に対して入力チェック
する必要ないし、PostBackの容量も少なくて済むし。
>>758 >repeater全体にlinkbuttonつけたんですが、
各行に1個のボタンを付けて、それをクリックすると行の詳細が、
パネル(パネルってなに?)に表示されるってことかな?
んで、クリックするとなぜかそのクリックした行のデータだけ
repeaterから削除されてるってこと?
いまいちどういう動作をしてるからわからんので、
記述したプログラムをどこかにupもしくは
操作している最中の動きをスクショでとってどこかにup
能力の無い馬鹿ほど最初に予防線を張りたがるよねw 大抵が、パフォーマンスが出ないのは作りがしょぼいだけ。それを仕方ないと言い訳する屑。 googlemapみたいにアジャックスつかって、見えてる部分だけデータを拾ってくるようにして、スク ロールインした部分は随時データを拾ってくるようにすればいい。 これなら、画面上に見えてるコントロールの数はずっと少なく出来るし、レスポンスも工場する。
何いってんだか意味ワカンネ
>アジャックス
TextBox20000個より阿呆がいる
>>762 やってみろよ。
見せてくれ。
作りがしょぼいだけってんだから簡単にできるんだろ。
まもっとも、できるできないより問題はどんだけコストをかけるのかなんだけどな。
一方ロシアはページング機能を搭載したRepeaterコントロールを ASP.NET AJAXを使って実装した
>>758 ポストバックして一覧再描画してないって落ちじゃね?
SharePoint Server Excel Services...
>757 普通、OWC考えないか?
>>757 つ jqGrid(JQuery Grid Plugin)
つ UltraWebGrid(NetAdvantage)
774 :
762 :2009/08/06(木) 00:52:33 ID:???
>>769 ハァ?
要件は全然変わってないだろ。馬鹿ですか?w
>見えてる部分だけデータを拾ってくるようにして、スクロールインした部分は随時データを拾ってくるように って書いてなければ、勝手にそんな機能を実装してるわけで要件は変わってる
776 :
762 :2009/08/06(木) 01:16:17 ID:???
要件の定義と機能の設計の違いが分からない馬鹿しかいないの?
検索した時のスナップショットってのが必要かも知れんがな。 まあそれはおいといて早く作って見せてくれよ。 実装イメージでもいいぞ。
「要件」という言葉を、「(システム開発の)要件定義」のことだと、勝手に論理のすり替えして楽しい?
>>757 は
「詳細設計から参加だから、もうどうしようもなかった。」って記述してるんだから、
すでに詳細設計書が存在してるわけで、この場合の「要件」とは、
その詳細設計書を実現するのに必要な条件のことでしょうよ。
>よう‐けん〔エウ‐〕【要件】
>1 大切な用事。「―のみ記す」
>2 必要な条件。「教育者としての―を満たす」
そもそも、ブラウザの画面をスクロールさせて、コントロールが表示エリアに入ったことをフックできるイベントなんてあったっけ? 仮に出来たとしても、cssで非表示させてるだけならhtmlのファイルサイズの削減にはならないから軽くならないし、 ポストするデータサイズも同じだし、むしろスクロールする度にJavaScriptのイベントが発生するから、 ベタに表示させるより重くなるんじゃね? ASP.NET AJAXでスクロールするたびに動的にコントロールを生成するのなら、 初期に表示されるコントロールが少ないからhtmlのファイルサイズの削減にはなるけど、 スクロールさせるたびにサーバに問合わせてコントロールを表示させてデータを表示させるなんて、 物凄く遅くなるんでないかな。 さらにデータが変更されたテキストボックスが表示エリアから消えた場合、 それを復元する術がないから、非表示になったテキストボックスのデータも いちいちサーバにポストバックして保存しないといけない。 そんなことするなら、ベタに5万個のテキストボックスを表示させたほうが軽くないか?
簡単に実装するなら <iframe> を縦に並べてスクロールインしたときにページ単位でロードするだけでいい。 お前にも作れるよ。
複数行にまたがって変更する場合どうすんの?
でそれはべたに作るより速いのかね?
50ページに分割したら最初にロードするのは1000個だけですむ。 遅くなる理由が見つからない。
onscrollでスクロールされたイベントは発生するが、 どのコントロールが表示状態になったかは取得できないな 従って、絵に描いた餅 Flashかsilverlightなら可能だと思うが
全件表示か、ページ分けしての表示なら問題ないが 1つのページに複数のページが表示されるのは機能的に問題 データはいつ削除されるか追加されるかわからないんだから、 最悪の場合、50ページすべての行に同じデータが表示される可能性がある そして後からデータが追加されて51ページ目が発生した場合にも対応できない。
ページ分割というか、まあ1画面に表示する項目を絞れば早くはなるだろうな
後はAJAXなりで適当にスクロールしてるように見せかければいい
>>786 そういったことを防ぐために排他制御って考え方があるんだが
機能的に問題かどうかは、ロックがどうなってるかによる
普通のWEBアプリに見られるような楽観的ロックなら問題かもしれないが
適切なロックがあれば問題ない
そう考えると元の設計は、もしかするとロックするから
全項目を1画面に表示したいのかも知れない...と思ってみたがたぶん違うなw
楽観的排他制御じゃないロックなんて普通は最後の手段に近いけどな。 まずはセッションとかでどうにかならないか考えるだろ。 あと数を絞れば速くなるに決まってるなんて言ってるのがいるが、 ホントに試してみたのかい?
例えば一気に端から端までスクロールしてもまともに動くのか、 実は最初から全部読んだ方がスムーズだったなんてことはないのか。
790 :
762 :2009/08/06(木) 09:46:36 ID:???
>>778 詳細設計から参加、つーたら、普通は詳細設計書を書くところから参加という意味だろ。
馬鹿なの?死ぬの?
いいこと思いついた。スクーロルバーは標準のスクーロルバーじゃなくて、ボタンか何かを 配置して、画面上には常に固定のコントロールを配置。 で、スクーロル下をボタンをクリックしたら txtbox2の内容をtxtbox1に txtbox3の内容をtxtbox2に txtbox4の内容をtxtbox3に txtbox5には新規にDBから取得した内容を新規にセット ってやれば、画面上には常に一定数のコントロールしか表示されないし、PostBackerの処理 も簡単で一石二鳥じゃね?
>>790 突っ込まれると思ったw
詳細設計時に存在するには内部設計書だな。すまんかった。
つーかいちいちプログラムと関係ないところのツッコミしかできないのかよ?
吐いた唾を飲み込むの?死ぬの?
唾飲み込むぐらいじゃしなねーけどwww
>>787 Webアプリで1画面表示する間、ずっとデータベースをロックしろとでも?
この場合、いつ最下部のページを表示する画面にスクロールかわからないから、
ページをみてる間はずっとロックかけてる必要がでてくるわけだが。
他人が使う可能性や、ブラウザのページの切り替わりの
可能性なんて考えたら、そんなロックは実用上不可能だろ。
結局、重複させない、または表示途中で削除されたデータに対応するには
クライアント側(ポストバックかクッキー)かサーバ(セッション)でデータを持ち続け、
最終的に楽観的ロックで確認するしかない。
>>791 2万行あったら最下部までたどり付くのに2万回クリックすんの?ww
そうなると100行単位とかのページ単位で切り替わるほうがいいんじゃね?
それでも200回クリックじゃつらいから、10ページ前に戻る、10ページ後に進む的な
ページングのボタンを設置したほうがいいんじゃね?
そうなると
>>768 で答えは既にでてる。
ま、作る前にワーニング出さなかった君の負けだよ。 Ajax、XBAP、Silverlight、Flashなんでもいいから ユーザビリティーの良いのに作り直す事だね。
キミちゃんと最初から読んでる?
>>795 ああ、読んでるよ。
設計書通りに作ったんだろ。
設計書見た段階でこりゃ動かんわってわかってたんなら
その段階で何かするべきなんだよ。
ちゃんとせんから余計な後戻りが発生するんだ。
読んでてそんな理解ならよっぽど無能なんだな
>>784 scrollTopかscrollYかpageYOffsetを調べれば可視がどうかぐらいすぐわかるだろ?
>>789 onscrollにいちいちまじめに反応せずに1秒後に更新すれば解決だな。
おまいらJavaScript舐めてんの?
1秒後に更新て、絶対元の方がましって言われるぜ。 ゆっくりスクロールしたときどうするんだよ、使いもんにならん。 ユーザーの使い勝手が元々求められてることだろう?
て言ったらじゃあその辺うまく調整すりゃいいだろとか言われそうだが、 とにかく元々言いたかったことは、そんな簡単にできるようなことじゃなくて かなりいろいろ考えなきゃまともに作ることなんて出来ないってことだ。 最終的にホントにまともなものが出来るかも怪しい。 作りがしょぼいだけなんて簡単な話じゃない。
VisualStadio2005でウェップページを作っています。 リピーターコントロールの中にComboBoxが入っていて、ComboBoxのアイテムの中身はDataSetに入っています。 このComboBoxとDataSetを紐付けたいんですが、ItemDataBoundの中で一々 FindContorol→DataSource設定→Baind() ってしないと駄目ですか? ObjectDataSourceコントロールとかうまく使ってこの辺をノンコーディングで実装できたりしませんか?
>>801 Repeater、入れ子(またはネスト)で、Repeaterコントロールに
DataSource(DataSet)を動的にバインドする方法がわかるから、
それと同じ方法で実装すれば可能だと思うよ
×Repeater、入れ子(またはネスト)で ×Repeater、入れ子(またはネスト)でググると
最近、FindControlを使ったら負けだと思うようになってきた
>>798 無理
コントロールのサイズがどの環境でも一定じゃないから、
スクロール量と画面の高さと、現在表示されてるコントロールの数に相関関係がない。
cssを無効化せず表示の拡大・縮小機能を使わないなら可能かもしれないが。
さらに一番最初にその画面を表示させた時点で高さ(スクロール量の最大値)が決定してしまうから、
表示中にデータが追加された場合、一番下にスクロールしても非表示のデータが発生してしまうし、
条件によっては同じデータが複数表示される可能性は排除できない。
ページ分けでも同様の問題は発生するが、同じページに同一データが複数回表示されてしまうのは
運用上、絶対にまずい。
もっと言えば、スクロールするたびにAjax等でhtmlとデータを取得していたのでは、
そのつどオーバーヘッドが発生するので、画面の最も下の行を閲覧しようと思った場合、
前ページを表示するより遙かに重くなる。
>>805 コントロールのサイズぐらい取得しろよ。できないならdivで囲んでdivのサイズ調べろ。
さらに運用上まずいならサーバーセッションでキャッシュしろよ。
もっと言えば1秒後って意味が理解できなかったみたいだね。よくかんがえてみよう!
スクロールするたびに1秒もまたされるのかよw つかえねぇw
>>806 >コントロールのサイズぐらい取得しろよ。できないならdivで囲んでdivのサイズ調べろ。
無理
やってみなよ
拡大縮小かけても正常な値は取得できない@IE8
>>806 だからさっさと見本を見せりゃいいんだよ。
できないのは技術力がなくて作りがしょぼいだけってんだから
当然それなりのもんができるんだろ?
絶対まともなもんなんてできないだろうけどな。
なんで俺が作らなきゃいけないんだよ。アホかお前らww
100人がお前のことをアホだという お前が他の100人を全員アホだという どっちがアホかな?
う〜ん。何でそこまで拒絶するのかがわからない。 5万行を軽く表示できるからいらないっていうならそれでいいけど。
できもしないことを出来るというからこうなる
>5万行を軽く表示できるからいらないっていうなら だれも言ってないよねw できるんならやって見せてほしいだけ。 できないんなら簡単にできるみたいなでたらめ言ってんじゃない。 どうせ深く考えずに感覚だけでもの言ってんのが明らかだし無駄だけど。 なんともしらじらしくてうざいわ。
よーし、パパあした時間が余ったらつくっちゃうぞー
なんでお前の仕事をタダで手伝ってやらないかんのだよ まともなの作って欲しいなら金出せって事だわ 夏休みの宿題なら手伝ってやってもいいがな
話の流れがわかってないなら無理してレスしなくていいよ
だからごまかしやら話ずらしやらしらじらしくてうざいんだよ。 深く考えずに当然出来るだろうと感覚だけで言ってましたって素直にいって消えろ。 っても無駄だわな。
夏休みの宿題だからやり方を教えてくだしあ
さ、ASP.NET側の実装はできたぞい あとは、JavaScriptで表示されてるコントロールを取得するところだ
詳細設計からの参加だっていってんだろ? バカかこいつは。
825 :
822 :2009/08/07(金) 12:23:15 ID:???
なんとなく出来たが、カクカクして使いにくいな あと、結局、編集してもスクロールして画面から消えると元に戻せないし、 それを実装するとなるとかな〜り面倒な感じだな
826 :
822 :2009/08/07(金) 12:40:57 ID:???
1000行ぐらいだとまだいいかなって感じがするけど、 5000行とかだと超時間かかるな・・
で、jqGridはどんな仕組みになってるわけ?
828 :
822 :2009/08/07(金) 13:27:09 ID:???
動画撮影したけど見る?
何を言ってるの? スクロールとデータのオンデマンドな取得をどのように実現してるのか聞いてるんだよ。 当然そういうやり方でスムーズな操作やスクロールを実現してるんだろ? まさかページングなわけないんだよね?
832 :
822 :2009/08/07(金) 14:24:02 ID:???
動画10Mぐらいあるんだが、自分の持ってるレンタルスペースは10Mも乗せられなかった(ノ∀`)アチャー それならPCをサーバとして公開して動画を乗せようとおもったけど、 サーバとして公開するならIISで作ったの公開すればいいじゃんね(ノ∀`)アチャー でも、公開したらおまいら鯖に悪さしそうだから、ちょっと方法を考え中(・∀・)ニヤニヤ
>>830 なんでそんなに偉そうなの?
自分で確かめろよ
スレの流れを理解せず、自分勝手なレスをしてるから 例:アドオン利用しない前提なのにアドオン紹介したら単なるキチガイ
こんなコンポーネント知ってるぜ!とか、こんなやり方しらねーのかよ!と 高圧的、傲慢的に指摘する奴ほど、過去レス読んでなくて支離滅裂
836 :
822 :2009/08/07(金) 15:52:09 ID:???
jqGrid見てみましたが、 どう見てもページングです。 本当にありがとうございました。
ラインジングがご希望なの?
Ajaxで動的にテキストボックスで表示させても、 数千件だと鬼のように遅いから無理 最初の表示は遅いけど、最初に表示させたほうがよっぽどはやいみたいね
まさに作りがしょぼいだけとしか言いようが無い。
おまえら歓喜
実際のとこ可能かどうかは何とも言えないけど まあそうそう簡単にまともに出来るもんじゃないわな仕組み的に考えて。
できるに決まってるだろ、技術がなくて作りがしょぼいだけ。 俺はできないし実例も見つからないけど。 こんなとこですか?
単純に画面だけ先読んで、 データの読み込みを非同期にしてひたすら追加していく って辺りが現実的かな。 結局最後まで表示できるまでに時間はかかるしデータ量の限度も低めになるだろうけど。 操作に合わせて取得ってやり方では絶対無理だと思う。 操作にラグがあって操作感が悪いってのを避けようとするとね。
>>836 の例はあらかじめ作成した5000行のテーブルにデータを挿入しているみたいですね。
データの挿入に伴うセル幅の再計算とテーブル全体の再レンダリングに時間がかかっているように見えるけど
もっと別のところで時間がかかっているの?
いきなり50000行のテーブルを作るのは50000個のコントロールを置くのとくらべて
ほとんど進化していないような気がしますが。
スクロールバーをうまく再現できるのかどうか俺にはよくわからないけど 必要なところだけ作成するやり方でうまくできれば相当速くはなるだろう。 ただし、結局スクロール(操作)と表示のタイムラグのせいで、 データ表示には向かない(操作感が悪い、使い勝手が悪い)感じになるだろう。 普通に表示した方がまし、って感じに。 さらに一度読んだ部分はクライアントに残しとく感じなら操作感も良くはなるかな。 しかし最初のスクロールは遅いままだから、結局単にデータは非同期にするだけで 一気に全部読んでしまう(サーバへの要求は分割する感じ)のがましかな。
>>846 >データの挿入に伴うセル幅の再計算とテーブル全体の再レンダリングに時間がかかっているように見えるけど
>もっと別のところで時間がかかっているの?
いやTextBoxを画面の表示範囲の部分だけ表示させる処理をし、そこにデータを表示させてるだけ。
具体的にはTextBox1.Visible=true;TextBox1.Text="ぬるぽ";をしているだけ。
この条件は一番最後のリンクの5000行の全件表示と同じだけど、
ajaxでその都度書き換えるより、全件表示の初期処理のほうが遙かに早いから
これをもってレンダリングに時間がかかってるようにみえるという意見に反証できると思う。
>いきなり50000行のテーブルを作るのは50000個のコントロールを置くのとくらべて
>ほとんど進化していないような気がしますが。
物理的に何かしらの高さを設定できないと、スクロールバーが表示すべきコントロールの高さで設定できないから、便宜的にTableを設定してる。
それにデザインの観点から表示されるデータがテーブルで囲まれてるのは普通だし、
これを進化していないと捉えるのは筋違いだと思うけど。
どう?
>>847 データの行数に従って、<div>で高さを設定して行数に応じたスクロールバーを表示させるようにして、
画面の高さに応じた行数にぴったり合うサイズのテーブルを動的に生成し、
そのデーブルをスタイルシートでブラウザの表示範囲の絶対指定で位置を固定する?
スクロールしても動かないBackGroundImageみたいにw
それだとページングがスクロールバーになっただけのページングと同じだし、
スタイルシートが無効にされたブラウザだと無理だから現実的じゃない気がする。
うーんやっぱし何も考えずに全部表示のが一番ましに思えるなw
>>762 さあそろそろ屑どもに正解を教えてやってくれ
>>848 データ挿入するたびにセルの横幅だけじゃなく縦幅も伸びてるよ。
一番最後の例もjavascriptで表示してるの?
サーバー側で作ってるんじゃないの?
>>849 スタイルシート使えないって条件なら確かに難しいかもね。
>>852 そういう意味ではなく、レンダリング全体として考えた場合。
一番最後の例はサーバ側で作ってるけど、リンクをクリックしてから表示されるまで、
何もないところから表をレンダリングしてるわけで、レンダリングする時間がそこに含まれてる。
5000件の動的生成のページも、スクロールをトリガーにイベントが発生し、
データを取得してページをレンダリングしてるわけで、レンダリングする時間がそこに含まれてる。
どちらも5000件のデータをレンダリングをする時間が含まれてるのに、
一番最後の全件表示のほうが、動的生成より時間が圧倒的に短いから、
レンダリング以外の部分で時間が掛かってるんじゃないの?という推測をしているという話。
>>852 >スタイルシート使えないって条件なら確かに難しいかもね。
というか、スクロールバーがページング機能を果たしているだけだから、
それだったら、普通にページング機能を実装したRepeaterコントロールで実装すれば?と俺は思うね。
だって結局は、縦に5000件あるデータの一部分をくり抜いて、それを画面に表示しているだけなんだから、
ページング機能を実装したリピーターと同じでしょ。
それが、<< < 1 2 3 4 5 6 > >>になってるだけという話で。
>>853 推測だけじゃなくて実際にテーブル使うのやめてみなよ。
行番号と<br>だけでいいだろ。
>>854 それでいいと思うよ。
>>855 推測っていうか、表の横が伸びてるとか縦が伸びてるとかいうけど
もとあるテーブルを伸縮してるわけじゃなくて、
AJAXではinnerHTMLでhtlmをゼロから描画してるわけだから、条件は一緒だと思うけど。
>推測だけじゃなくて実際にテーブル使うのやめてみなよ。
第三者だけど俺は実際に試して実証に参加したので、
次はあなたにおまかせします。 (つ∀-)オヤスミー
>>AJAXではinnerHTMLでhtlmをゼロから描画してるわけだから、 それには気づかなかった。すまんw
>>857 いまさらに調べてみたんだけど、
Tableの描画にRepeaterを使っているんだけど、
Repeaterだと、Repeater内のhtmlがごそっとhtmlで送られてきて描画してるみたい
だから結局、ページを最初から描画するのと変わらないからレスポンスも
めちゃくちゃ遅くなってるみたい。
なんでRepeaterを使わずに、動的にPanelか何かにテーブルを作成しておいて、
あらかじめTextBoxを描画しておいて、そのTextBoxのみに対して
変更を加えれば描画が劇的に早くなるかもしれない。
ただ、それだと最初にページが表示されるのに必要なhtmlの容量が
全件表示させるのとほとんど同じになるからあまり意味がないような気もするけど。
結局、httpdのレスポンスがそんなに早いものじゃないから、
きびきびしたレスポンスじゃなくて、そのぶんを考えると、そんなに気持ちいいもんじゃないかもしれない。
時間が出来たので、ちょっと試してみる。
859 :
nobodyさん :2009/08/08(土) 14:54:42 ID:Gb5bXhyn
世の中にはアホな案件がいくらでもあるんだなぁ。 何でもかんでもwebでやろうと考える奴は氏ねばいいのに。
お前らの方言では「できない」=「やりたくない」なんでしょ?でしょ?
そうだよ
SilverLightがWinForm並に動作するようになったら 全部Webになってもおかしくないかも
SilverLightって凄いの?つーか流行りそう? 勉強してみようかな。
>>863 今のところまだ微妙
基本的にはFlashと同じだけど、リッチクライアントとしては面白いかも
ポストバック無しで複雑な入力チェックとか、合計値の計算とかをScliptなしでできたり、
グラフなどを書いたりできるので、軽いアプリみたいな感じで利用できるし
でも中身は.NETとC#(CLR)だから、C#知ってれば問題ないんじゃないかな
C#ひとつでWinForm、ASP.NET、Silverlight、WPF、XNAとかできちゃうから
C#けっこうお勧めかも
CLRはVBしか使えないのであきらめます。
.NET4.0のDLRでPython(IronPython)とかJavaScript(マネージドJScript)も 使えるようになるから、もうちょっと待て。 というか、最近の.NETは全部そっち系の開発者を取り込むための拡張 ばかりでヤレヤレな感じ。
>>864 Silverlightは別途手動インストールってのがな。。
WindowsXPでも.netアプリ作ろうとしたら、ランタイムを別途インストール
しなければならないってだけでポシャッったからな
過渡期はいろいろ難しい。
そこでjavascriptフルスクラッチですよ
>>867 MicrosoftUpdateで配布じゃなかったっけ
それにFlashと同じようにプラグインだからインストールは簡単
DBのトランザクションを実装する場合の書き方について・・ try{ using(SqlConnection conn = new SqlConnection(hogehoge)) { using(SqlCommand cmd = conn.CreateCommand()) { transaction = conn.BeginTransaction( "hogehoge" ); cmd.Transaction = transaction; // なんか処理 transaction.Commit(); } } } catch( Exception ouch ) { // ログ取得かなんか } transaction.Commit();される前に例外が発生した場合、明示的にtransaction.RollBack()と書かなくても using機構でコネクションが閉じられて自動ロールバックされるって認識でいいですか?
さぁ? MSDNライブラリでは明示的にロールバックしてるけど。
自動でロールバックされるけど、たった1行を惜しむだけの正当な理由が無い限り、ちゃんと ロールバックを記述すべきだと思う。 あと、余計なお世話かもしれないけど、 using( ) { using( ) { は using( ) using( ) { って書けるよ
ロールバック書くときは、トランザクション中かどうかで例外になったりするから気をつけろよ。
874 :
nobodyさん :2009/08/11(火) 13:10:19 ID:r4b1PC39
ちょっと聞きたいのですが、ASP.NET2.0には リリースコンパイルのようなものは存在しなかったりしますか?
>>872 1行だけじゃないだろ。。
一番外側のcatchではすでにトランザクション閉じられてるし。
やろうとするなら
try{
using(SqlConnection conn = new SqlConnection(hogehoge))
{
using(SqlCommand cmd = conn.CreateCommand())
{
try
{
transaction = conn.BeginTransaction( "hogehoge" );
cmd.Transaction = transaction;
// なんか処理
transaction.Commit();
}
catch
{
if(transaction!=null) transaction.RollBack();
}
}
}
}
catch( Exception ouch )
{
// ログ取得かなんか
}
ネスト深くなるな・・
876 :
nobodyさん :2009/08/11(火) 18:21:35 ID:PKpaKHkt
ViewstateをSessionに保存して、Save/LoadPageStateFromPersistenceMedium で出したり入れたりしています。よくあるパターンに従ってます。 特に凝った事はしていません。Sessionのキーは次画面urlです。 で、ふと思ったんですがキーをurlにしてると、異なる画面に遷移する度に Sessionオブジェクトを作り散らかしてますよね?不要になったタイミング でSession.Removeしてやればいいような気がするんですが、そのような例 を全く見かけません。 LoadPageStateFromPersistenceMediumの中で、SessionからViewstateを取 り出したら早々にSession.Remove(キー)を行うのは何か問題がありますで しょうか?
リロードしたり、戻るボタンで戻った時に再表示できなくなってしまうので、 特にリソースを消費しない限りRemoveせずそのままにしておいて、 自動的にセッションが切れるのを待つようにしてる。
httpなんてもうやめりゃーいいのになぁ。とっくに限界来てるだろう。 MSの中の偉い人が新しいプロトコル設計して広めてくんないかな。
各上位レベルのプロトコルが OSI参照モデルのトランスポート層の上に成り立ってる技術なんだから httpだけ新しいプロトコルなんてわけにゃいかないでしょうよ 極論でいえばtelnet叩いてサーバと通信する以上のことはできないんだから
言ってることがよくわからんな 下位の層の上に成り立ってるからこそ、上位に新しいプロトコルを作れるんじゃないか いまさらTCP/IPに代わるもの開発するのか? 極論で言えば、任意のデータをやりとりできる以上、なんだってできる オーバーヘッドの問題で早いか遅いかだけだ
httpのオーバーヘッドはほとんどtcp/ipのオーバーヘッド その土台の上に成り立つ限りtcp/ipのオーパヘッドの解消にはならん
Webアプリの作成の勉強に、今はVWD 2008 Express Edition使ってVBで作ってるけど、 VB 2008 express editionを使ってWebアプリ作るのとどこが?どう?違うの? もしかして同じ?VB 2008 express editionの方が軽い? (VWD 2008 Express Edition重いんだよね?)
各言語のExpressEditionでは、ASP.NETの作成は無理なんじゃなかったっけ?
マジで? 俺C#のやつで作ってたけど・・・ まぁデザイン構成は脳内でやるけどな
>>885 aspxやascxは全て手打ち?でやってる
まぁデザインは決まってるんで俺ははめ込んでいくだけなんだけどな
VWD2008ってVWD2005の何倍重いですか?すごく重いですか? VWD2008の新機能には興味あるんだけど、メチャ重そうなのでバージョンアップ躊躇してる。 Celeron M 1.5GHz メモリ512MB WinXPのノートでVWD2008大丈夫かなあ?やめた方がいいですか?
XPがギリギリ使いものになる程度のスペックで開発とか。 よく2005動いてたな。2008云々以前だわ。
>>888 そんなにスペック低いかなあ?このノート3年半ストレスなく使ってるけどなあ?
Word2007、Excel2007入れてるし、アプリもたくさん入れてるし、VWD2005も立ち上がり
には時間が掛かるけど、通常作業はストレスなく出来るよ。
VWD2008入れてみようかなあ?ダメならアンインストールするか。(少々怖いけど)
両方いれられないの? 自分は2005と2008のproを両方いれてるけど
起動と最初のファイルの読み込みが遅いかなって感じだけど、 別にどっちもそんなにかわんないと思うけどね。 自分のノート(P8400)にもインストしてるけど、そもそもノートじゃやるきしない。 普段はデスクトップ(E7400とE8500)でやってるけど、まぁ普通に使える。
>889 NECのモバイルノート(PenM753、RAM768MB、XPSP3)でVWD2008使ってたけど >891が書いてるようにプロジェクト開く時の読み込みに時間かかるくらいで、そんなに重いとは思わなかったよ
デバッグしてたらメモリ数百MBくらい簡単に使ってしまわない? CPUはまあ、少々重い程度で何とかなるけど、メモリは多くないと厳しい。
>>893 ノートで1G、デスクトップで2G積んでるからなぁ
いろんな意見あると思うけど、開発PCはなるべく高スペックでやったほうがいいと思うよ
もちろん実際に動作させてどうなのかは、低スペックPCを用意して実験したほうがいい
というのは当たり前として。
最近だとPCスペック以外にも大画面ディスプレイ、しかも2個欲しいよな。 サブは大画面じゃなくてもいいから。(あまりに大画面だと逆に近くて見づらいが) 仕様書とかみながらだといちいち切り替えるのが面倒。 昔17インチのシングルディスプレイでやってたけど 今メインが24でサブが19だが、快適すぎて作業効率が段違いだわ。 でもこの辺上役が理解ないんだよなw 作業効率が上がるということはそれだけ仕事がはかどり、金も稼げるというのに たった数万程度(2台のディスプレイ)の出費すら惜しむ。 その数万かけて上がる作業効率は、長期的に見れば数十万数百万、人によっては数千万にもなるというのに。 デザイナーにばかりハイスペックマシンや大型ディスプレイ用意する割に、PGには低スペックマシンと小さいディスプレイとかだと そういう会社は分かってないというのが一目瞭然だわ。 ローカルだと仮想環境で自分のPCでテストサーバとか立てるし、CPUはデュアルコア3G↑ メモリ4G、グラボはまあ適当でいいがそれぐらいは欲しいな。 それでも10万あれば余裕だし、ディスプレイ入れても15万程度なんだからそれぐらいは先行投資しろよっていう愚痴。
言えばいいだろ。 大手はそうはいかんだろうが、中小の開発環境なんて社員の発言でどうとでもなるだろ。 俺は上司に言って最新スペックのPG、デュアルモニタで開発してる。 低スペックマシンで開発しろと言われたらそんな会社辞めれ。
縦は絶対に1200ピクセル欲しい 1050とか1080とかは若干短い ところが、いまじゃ16:9の液晶ばかりだ 氏ね
800x600しかでないノーパソで開発してる漏れ最強うは
FormViewでRDBMSのトランザクションを扱う方法を教えて下さい FormView_ItemInsertingでトランザクションを起こして FormView_ItemInsertedでコミットするような流れにしたいのでが FormViewで処理対象となるレコードを上記トランザクションに含める方法が 分かりません
>>896 逆じゃね。
大手ほど金あるからいいマシン使ってる傾向にある。
俺の知り合いにHPの社員いるが、ノートがデスク並みの化け物マシン。
カタログ渡されて、好きなスペック見積もって希望出せとか言われるらしい。
中小ほど意見を出しやすい環境にはあるが、環境だけで金がないから実際にマシンが用意されることはあまりない。
言って用意してくれる=上司が理解ある なんだし。
理解がなきゃいくら言っても無駄だよ。
俺なんて4年前の話だが、ペン2の450Mhz メモリ256MBで開発してたぞw
その時はJavaだったが、Eclipseの起動だけで5分〜かかる始末。
他にも何をするにも時間がかかる。
そしてとっとと辞めた。
今の環境でもそう良くはないけどな・・・
マシンスペックはそこそこだが、ディスプレイは中型程度のシングルだわ。
まぁスレチですね。
903 :
nobodyさん :2009/08/18(火) 22:39:53 ID:Ptn4NZ4N
>>902 >俺なんて4年前の話だが、ペン2の450Mhz メモリ256MBで開発してたぞw
そういう経済観念の社長って、育った家が個人商店やFCチェーンだろw
>>900 >>901 thx
確かに視点が違ってました。
SqlDataSourceのイベントでトランザクションをコントロールするんですね。
多分誰しも一度は考えることだと思うんですが。 VIEWSTATEの内容を使って画面の入力状態を復元することは出来ないでしょうか? つまり A画面→B画面→A画面 と遷移して、Aに戻ってきたときに入力内容を復元させたいんですが、この時にVIEWSTATE 使えないかなぁ、と。
>>905 1つ目の例のほう、それだけ読むと
「BからAに遷移する際、PostBackURLを使って遷移するとBから戻ってきたAの最初のPage_Load
イベントは、IsPostBackがtrue(つまり非PostBackなPage_Loadは発生しない)」
と絶対期待するけど、実際には最初のPage_LoadはIsPostBackがfalseなんですが・・・
Server.TramsferやPostbackURLはイマイチ動作が把握しきれないからキライ
909 :
nobodyさん :2009/08/20(木) 11:52:59 ID:tDv67O1u
すみません。 最初に「読み込み中」とだけ書かれたページを表示して、 そのページが一旦表示された直後に 本当の内容を読みに行って「読み込み中」と 書かれた部分を置き換えるという感じのページを作りたいんですが、 C#のコード側でこういう機能を実装するには どんなふうにしたら良いのでしょうか? ボタンなどの場合はClickイベントに追加すれば良いのですが、 ページの表示が完了したときに発生するようなイベントは見つけられませんでした。 JavaScriptのpageLoadに書けばできそうですが、 JavaScriptを手動で書くのは可能な限り避けたいです。。。
夏だなぁ
>>909 C#なんてのは、おおざっぱにいうと、ブラウザに渡すテキストを作るだけしか出来ないのだよ。
>>909 UpdateProgressとAlwaysVisibleControlExtenderで出来るでしょ。
後はてきとーにぐぐれ。
>>909 AJAX使えばできるんでないかな。
タイマーらしきものがあったはずだから。
もしくはSilverlightを使って読込が完了し次第、フォームを表示するとか。
javascript使ってよくて、ギミックとして「読込中」みたいな表示をしたいのなら、
読込中表示をして、htmlの最下層に何かのボタンをクリックするjavascript書いて
ポストバックさせて、次に読込中のところを本当に表示させたい内容と入れ替えるとか。
ajaxと組み合わせるとそれっぽくみえそう。
914 :
909 :2009/08/22(土) 11:34:55 ID:???
>>911-913 ありがとうございます。
タイマーのインターバルを最小値にして
Tickイベントで更新するようにしたらいけました。
一番簡単にできそうだったので今回はタイマーを使いましたが、
JavaScriptやAJAX Extenderについてもこれから勉強したいと思います。
915 :
nobodyさん :2009/08/24(月) 02:32:07 ID:cO0SRF/B
updatepanel外にあるコマンドボタンでポストバックしたときに、 updatepanel内のコントロールにフォーカスセットしたいのですが、どうすればいいのでしょうか?
みなさん、デバッグログを出したい時にどうしてます? Trace使って画面に出力してます?それとも詳細にファイルログ出してます? 自前でファイルに書いてます?それともEnterpriseLibrary使ってます? それとも、Log4netとか? 個人的には、EnterpriseLibraryを使って、ファイルに出してますけれど、 メソッド名やコード行も出力するためにラップする必要がありますよね。 地道にやることも可能ですけれど、何かメジャーな方法というかサンプルありますかね? この辺りは、設計論というか実装論とも絡んできますけれども‥‥ 日本語で参考になるのは、赤間氏のWebアプリケーション開発技術大全の 3巻、ASP.NET応用編あたりでしょうか? StackTraceとContextBoundObjectで自分で実装しるって書いてあります。
>>917 ASP.NETのソースコードなんて1画面がたかだか数百行、短いと数行ぐらいしか無いので
デバッグなんかほとんど必要すらないだろ。なんでそんなに出力したいんだ?
俺はデバッガでステップトレースして解決しなかったことなんて一度も無いので
デバッグ用のログ出力なんか全く必要とも思わないね。
アクセスとかユーザーのアクションに対してログを記録するって言うなら話は別だが。
>>915 ScriptManager.SetFocus(Control control)のこと?
>>918 え〜、でも、ビジネスロジックとかデータアクセスとかそれなりに巨大になりますし、
既に現在のWebアプリって規模はフォームアプリと変わらないですよね?
CMSの機能まで含んでいると、それなりに複雑だと思うのですが‥‥
>アクセスとかユーザーのアクションに対してログを記録するって言うなら話は別だが。
システムテストの時とか、上記の感じにもなりますし‥‥
>>920 > 既に現在のWebアプリって規模はフォームアプリと変わらないですよね?
うーむ。 まあ、それは理解できなくはないが、Outlook風のWebアプリを作った経験から言わせてもらえれば、
コンポーネントベースで部品をまず開発していくので、部品ごとのテストは出来るし、その部品を
組み合わせて作っていくので、テストしにくくなることもないし、ログ調べてまでデバッグしなければ
ならないということ自体があり得ない。
私がいま書いているASP.NETのプロジェクト、ソースコードにして10万行近くあるが、
ログを調べたいと思ったことは一度もないな。
最悪でも、stack traceをLabelにでも出力しとけばそれで事足りることがほとんどだし。
Webアプリでそんなに内部状態が違いに干渉しあうようなことってそうそう無いので
俺自身、どうしようもないバグに遭遇したこと自体が無いな…。
要するに誰もログ出力で困っちゃいないからスタンダードな方法が確立されてないんだと思うのだが。
>>921 自分で最初から作っていくなら、まさにその通りなんですけれど、
他社が作って、品質も不明なモノを解析して機能追加するときには、
やっぱり、ログ出力文をガンガン埋め込んでいくのが、一番早いと思うんです。
正直、英文コメントが少し書かれていたりするだけだと、そうするしかないかなと。
> 要するに誰もログ出力で困っちゃいないからスタンダードな方法が確立されてないんだと思うのだが。
1) 小規模開発ならログ出力が無くても困らない。
2) 数億単位の大規模開発なら、ほぼMSコンサルがプロポーザル段階から付いてるので、
そこがサンプルコードを提供して、フリーでは外に出てこない
って感じだと思います。
普通はEnterprise Libraryベースでイベントログに出すかんじですね。
CodePlex辺りに何かありそうな気がしてきました。
>>920 デバッガとページレベルトレースとアプリケーションレベルトレースで事足る
必要ならトレースリスナーをごにょごにょ
>え〜、でも、ビジネスロジックとかデータアクセスとかそれなりに巨大になりますし、 Formにぐだぐだ書くのはあまりよくない実装法でしょ。 ビジネスロジックは、再利用可能なように別クラスにすべきだし、 ソリューションごとに必要な共通な機能なら、 Pageの継承クラスにメソッドを準備して、静的クラスに委譲すればいい。 ページに書くのは初期処理や各種のイベントに対応した処理を行うときだが、 これも他のクラスに委譲させれば済む。 入力データも一つのクラスのプロパティとして保持しておいて集約で管理する。 その中には入力チェックや表示のための変換も用意しておけば、 再利用できて便利だし、Formとロジックが分離できるから見通しがいい。 別クラスにしておけば、各種テストツールが使えるし、 極端な話、asp.net上でテストする必要すらないから WinFormで好きなログツール使って自由にデバッグすればいいだけの話。 >既に現在のWebアプリって規模はフォームアプリと変わらないですよね? Formには表示に関して必要な処理と、イベント呼応に関する記述で、 そもそもフォームを意味するクラスに、うだうだ書くのは間違いだと思う。
925 :
915 :2009/08/25(火) 01:19:06 ID:???
>>916 画面全体を更新しつつポストバックしたらUpdatePanel内のコントロールにフォーカスセットしたいのです。
この動画で言うと、最後の例でUpdatePanel内外のラベルコントロール両方が変わる感じでしょうか。
>>919 UpdatePanel内に配置したコマンドボタンでポストバックが発生したときにはそれで大丈夫なのですが、
UpdatePanel外のコマンドボタンでのポストバックだとフォーカスセットしてくれません。
もちろんcontrol.Focus()でもダメでした。
>>922 > やっぱり、ログ出力文をガンガン埋め込んでいくのが、一番早いと思うんです。
素人くさい方法だが、Console.WriteLineで出力して、デバッグウインドウへの出力を見るぐらいでは駄目なのか?
これで駄目なら、普通にsingletonのファイルへ書き出すクラスを用意して、そいつを呼び出すだとか。
どんなタイプのログ出力がしたいのかさっぱりわからないのだが。
逆に、こういうタイプのログを出力すると他社製のコンポーネントの理解が早く進むというのが
あれば教えて欲しいぐらいだが。
読んでて思ったんだが、IDEじゃなくて本番環境で デバッグしたいんじゃないの?
>>925 今テストしたらフォーカスしたぞ?
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</ContentTemplate>
/asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
</form>
protected void Button1_Click(object sender, EventArgs e)
this.ScriptManager1.SetFocus(this.TextBox1);
protected void Button2_Click(object sender, EventArgs e)
this.ScriptManager1.SetFocus(this.TextBox1);
929 :
925 :2009/08/25(火) 22:51:11 ID:???
もう一度テストページ作ってみたらすんなりとフォーカスセットされました。 アドバイスくださった方々ごめんなさい&ありがとうございました。
今やってるプロジェクトでは ボタンのvisible,enableとかの画面制御、入力チェック、データベースへの入出力など そのページに関する処理はすべてFormに記述されてて一つのaspxファイルで完結しているんですが こういう実装はよくないんでしょうか? Formとビジネスロジックを分けてる簡単なサンプルがあればいいんですが
>>930 プロジェクトの大きさや、内容、求められる開発効率によるから、良いか悪いかの判断は難しいかな
もし、Formのクラスに、connectionStringや、入力チェックの正規表現なんかを直書きしてたら論外。
DBへの接続や基本的な入力チェックはブロック化できるから、最低でもstaticなメソッドで用意しておくべき。
さらに、これらを分離して記述するとしたら、機能をさらにブロック化していって、
どの機能を共通化すると便利かを考えて分けてみるといいと思う。
すると、だいたい、基本的にはMVCモデルに似た形になってくと思う
http://www.itarchitect.jp/print/?menu3=38302 http://www.bin-cook.com/upper/layermvc.html ASP.NETだと、WinFormのような動作をするので、構造的にMVCモデルをそのまま適用できなくて、
どうしてもViewの一部にControlerを含むような感じになってしまう。
んで、自分の場合、ユーザからの入力を受け取ってデータベースに保存するような処理をする場合、
こんな感じで分けてる。
a)ユーザの入力値を保存し、入力値をチェックするクラス→Controlerの一部
b)データを再集計するなどし、DBにデータを保存(INSERT UPDATE)したり、
ユーザの入力値によってデータを出力(SELECT)するクラス→Model
c)aspx(Form)のクラス→ViewとControlerの一部
a)の親クラスには入力値をチェックする処理が記述してあり、
b)の親クラスにはDBに接続する処理やクエリを発行する処理が記述してあり、
c)の親クラスには表示のためのデータ変換(trueを○と表示するとか)するための処理が書いてあって、
それぞれ機能を継承させ、変更があったときに便利なようにしてる。
App_Code以下にどんどんpublicなクラスが増えていくお…
HttpApplicationを継承してるクラスのApplication_Errorメソッドで 例外を一括してキャッチしてファイルログに書きだしてるんですけれど、 参照ライブラリの中の例外がApplication_Errorを通らないことが分かってきました。 イベントログにはID1309で上がってくるし、Web.configのCustomErrorでも出ます。 なので、死ぬほど困るっていうわけでは無いのですが、 出来ればコードのどこかで一括してキャッチ出来たらなぁと‥‥ どなたか、Application_Error以外で一括キャッチする方法ご存知の方いらっしゃいます?
>>931 MVCモデルを否定するわけではないが、それがすべてでもベストでもない
>構造的にMVCモデルをそのまま適用できなくて
そのまま機能分割なりしていって、MVCモデルになるわけないだろう
それははじめからMVCモデルにしようと思って機能分割してるからそうなるんだ
標準のASP.NETはMVCモデルとの相性は悪い
だからASP.NET MVCなどが登場したりしてるんだよ
>>934 MVCのあたりを説明するのが面倒だったので、MVCのリンクを参照したのが、
逆に遠回りな説明になってしまったかな?
その点を端折りたかったのでMVCを経由しただけで、経由したからMVCは
直接、ASP.NETには適用できないと注釈しただけで、それ以外に他意はないよ。
なんで、MVCが絶対とは言ってないし、ASP.NETにMVCはそのまま適用できない(=相性悪い)という
ことについても意見が一致しているようだから、
MVCモデルにしようと意識して機能を分割していかなければ
MVCモデルに似た形にならないのか、なるのかということが論点かな?
>そのまま機能分割なりしていって、MVCモデルになるわけないだろう
機能分割でなく、共通化な。そりゃ単に機能を分割していっただけでは、
MVCモデルにまではたどり付かないだろうね。
機能の再利用性だけを目的に機能を共通化していっても、
それをそれぞれのクラスにまとめると、自然とMVCに近い形に近づいていくと俺は思うよ。
ただMVCの観点からASP.NETを見ると、機能的にVとCの一部が同じになってるから、
明確にVとCは分けられないけど、Cの一部(入力チェック等)をまとめたいという
ような感じに自然となっていくと思う。
だから、実際に
>>930 も
>画面制御(Vの一部)、入力チェック(Cの一部)、データベースへの入出力(Mの一部)など
と自然とMVCの基本的な機能を例として述べてる。
同じデータを扱って見せ方が違うような場合、入力チェックやDBは共通化できるから、
自然とCとMをなんとか別にできれば便利かなって漠然と思うと思うので、
やっぱ自然と近づいていくと思うけどなぁ
ログ出力はそういう専用のライブラリ使うか自作するか、 もしくは使い捨てレベルで共通機能化するか TraceSourceをそのまま使うか、 まあ大抵そんなとこだろ。 ログ出力をConsoleやファイルに直で書くやつはそういない。
>>935 機能分割でも共通化でもいいんだが
ASP.NETに相性わるくて直接適用できないようなものを素人に勧めるなよ
>>937 >>931 を良く読んで欲しいのだが、誰もMVCをやってみろなんて進めてないよ
MVCに近い形で実装してる自分の実装例を紹介はしてるけど。
共通化させようとすると、自然とMVCのような形に似てくると思う
↓
MVCとはこういう感じ(とリンク先を紹介)
↓
でもMVCはそのままASP.NETでは適用できない
↓
だから自分は、こんな感じで共通化、分離して再利用しやすいようにしてる。
以下、自分のやり方や分割の方法。
んなわけで、MVCを進めてるわけでも、自分のやり方を進めてるわけでもなく、
そんな考え方に至ると思うので、自分はこうしてると考えを紹介してるだけ。
別に至らねえよ
至らないと思うなら、それでいいんじゃない? 俺は自然と近づくと思うし、それだけなら単なる見解の相違。
お勧めでもないものを紹介だけしたのね 普通、なんかいいのないかって聞かれて、 非常に詳しく紹介し、自分なりの利用法も説明する 普通の感性ならお勧めされたと思うんじゃないか? 少なくとも俺にはあれはMVCをお勧めしてるように見えた ASP.NETに相性わるくて直接適用できないようなものを素人に紹介するなよ 受け取った方はお勧めされてると勘違いするぞ
>>941 いちいち揚げ足取りや、言葉尻だけ捉えて意見を言われても困る。
↓こんな感じでも紹介しちゃったら駄目なの?
MVCっていう考え方もあるという意味もあって、参考になると思って記述したんだけどな。
■分離して記述したいなら、機能をブロック化して、機能を共通化させると便利か考えるといいと思うよ
>さらに、これらを分離して記述するとしたら、機能をさらにブロック化していって、
>どの機能を共通化すると便利かを考えて分けてみるといいと思う。
■そうするとMVCモデルに近い形になると思うんだ
>すると、だいたい、基本的にはMVCモデルに似た形になってくと思う
■ちなみに、MVCモデルってのは、こんな感じだけど、でもASP.NETにそのまま当てはまるのは難しい。
>
http://www.itarchitect.jp/print/?menu3=38302 >
http://www.bin-cook.com/upper/layermvc.html ASP.NETだと、WinFormのような動作をするので、構造的にMVCモデルをそのまま適用できなくて、
どうしてもViewの一部にControlerを含むような感じになってしまう。
■それで、自分はこんな感じで機能を分離して実装してるんだよ。
んで、自分の場合、ユーザからの入力を受け取ってデータベースに保存するような処理をする場合、
こんな感じで分けてる。
a)ユーザの入力値を保存し、入力値をチェックするクラス→Controlerの一部
b)データを再集計するなどし、DBにデータを保存(INSERT UPDATE)したり、
ユーザの入力値によってデータを出力(SELECT)するクラス→Model
c)aspx(Form)のクラス→ViewとControlerの一部
a)の親クラスには入力値をチェックする処理が記述してあり、
b)の親クラスにはDBに接続する処理やクエリを発行する処理が記述してあり、
c)の親クラスには表示のためのデータ変換(trueを○と表示するとか)するための処理が書いてあって、
それぞれ機能を継承させ、変更があったときに便利なようにしてる。
とりあえず、StrutsやASP.NET MVC等のWebアプリ界隈で指すMVCと
責務の分担をさしたMVCは区別されていることに気づいてくれ。
君の言うMVCはn層データ構造と言い換えても大した差異は生まれない。
(元々n層データ構造自体がMS流のMVC解釈であるためというのもあるが)
例えば
>>942 をASP.NETの用語で言うならばaはコードビハインドであり、
bはDALであり、cはaspx, ないしコードビハインドだ。
というわけで、MVCそのものを進めてるわけではないは明らかでしょ? MVCそのものを勧めたり、または勧める目的で紹介してるというわけでなく、 MVCのメリットを理解してもらうために紹介してるんだよ。 その上で、そのメリットを享受するために自分の実装例を紹介してる。 MVCそのものは、そのまま適用できないかもしれないが、 MVCのメリットを紹介するためにMVCを紹介するのは何もおかしくないでしょ。
>>943 だからだな、そのMVCのメリットをASP.NETに取り入れるとって話をしてるんだが。
>君の言うMVCはn層データ構造と言い換えても大した差異は生まれない。
>(元々n層データ構造自体がMS流のMVC解釈であるためというのもあるが)
>例えば
>>942 をASP.NETの用語で言うならばaはコードビハインドであり、
>bはDALであり、cはaspx, ないしコードビハインドだ。
つーか、ASP.NETの概念でMVCのメリットを記述した内容を説明しても意味ないと思うんだが。
データアクセスレイヤーだって、コードビハインドに記述できるから、それを言ってしまえば、
aもbもcも全部、コードビハインドでしょ。
そうじゃなくてコードビハインドで記述できる内容を、別クラスに定義するなどして、
いかに再利用や保守性などを高めるかっていうことの例としてMVCを例として出してるわけで。
>>942 勧めるなっていったら、勧めたんじゃない、紹介しただけだっていったのはお前だ
揚げ足とるってのはそういうことだ
これ以上向いてないモデルについて説明する必要ないだろう
ぼくのかんがえたさいきょうのエムブイシーをくらえー
>>946 何度も書いてるが、MVCのメリットを理解してもらうために、MVCを紹介して何が悪い?
初めからMVCの利点を理解してもらうために、リンク先を紹介してるのに、
MVCは合わない→MVCを勧めて意味あんのか→MVCを紹介して意味あんのかって
変遷してるのは自分のほうじゃない。
しかも言葉尻捉えて他人を批判してるから、揚げ足とるようなことはするなっていってるわけで。
何度もいうが、MVCを紹介(正確にはリンク先を紹介)して何が悪いんだ?
>共通化させようとすると、自然とMVCのような形に似てくると思う
>↓
>MVCとはこういう感じ(とリンク先を紹介)
>↓
>でもMVCはそのままASP.NETでは適用できない
>↓
>だから自分は、こんな感じで共通化、分離して再利用しやすいようにしてる。
>以下、自分のやり方や分割の方法。
読解力ねーからmvcを絶賛してると勘違いしたんだろ 引き返せなくなって難癖つけてる
>>共通化させようとすると、自然とMVCのような形に似てくると思う >>↓ >>MVCとはこういう感じ(とリンク先を紹介) 水晶を買って以来、幸運が続いててさ。彼女はできるわ(ry ところでこの店で売ってるのが件の水晶なんだ。
>>共通化させようとすると、自然とMVCのような形に似てくると思う >>↓ >>MVCとはこういう感じ(とリンク先を紹介) >>↓ >>でもMVCはそのままASP.NETでは適用できない 水晶を買って以来、幸運が続いててさ。彼女はできるわ(ry ところでこの店で売ってるのが件の水晶なんだ。 でもそれは意味ないんだ。
せっかくいい話をしてるんだ。内容で議論してくれるとうれしい。
ちょっとMVCの話が出てるから、便乗で質問させて欲しいんだけど、 MVCフレームワークを使わずにASP.NETで開発してるときってさ、 このMVCのVだけ別の会社向けに変更したいとき、みんなどうしてる? つまり、A社にASP.NETで作ったシステム納品したんだよ。 それと同じでデザインだけ変更したシステムをB社にも納品したいんだよ。 そのためには、Vだけ差し替えなくてはならない。 でも中身は一緒なので、なるべくソースコード、プロジェクトは一本化しておきたい。 ASP.NETの .aspxって、VとCがくっいてて、分離できないのよね。 みんなどうやって解決してるの? 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
>>953 そんな事態があるわけ無い。
デザインが異なれば機能も異なるし、ガワだけ変えて済む問題じゃない。
普通は三層モデルで、ビジネスレイヤーとデータアクセスレイヤーを
別のクラスライブラリプロジェクトで作っておく。
1つのソリューションの中に以下の感じで。
CompA.Web <- Webプロジェクト
CompA.Business <- クラスライブラリプロジェクト
CompA.DataProvider <- クラスライブラリプロジェクト
CompA.Tests <- テストプロジェクト
もし、本当に
>>953 の言う通りなら、Webプロジェクト以外は同じ
>>954 > デザインが異なれば機能も異なるし、ガワだけ変えて済む問題じゃない。
いや、本当にガワだけなんだ。
ショッピングサイトとか、デザインだけ変えて納品したいんだ。
> もし、本当に
>>953 の言う通りなら、Webプロジェクト以外は同じ
だからそのWebプロジェクトに、顧客Aと顧客Bへの納品物で
共通部分があるのが嫌なんだ。
だから、
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
こうやっている。これが意外と現実的な解決方法だったりする。
CSSと画像ファイル変えるだけなら、それだけ変えればいいんじゃ
>>956 CSSと画像ファイルだけではなく、html上の文字列も変えたいんだ。
文字列なら、パラメータにしてしまうとか。 grid_viewみたいなのを使わないページなら、 テンプレートエンジン使うとか。
>>955 B社にソース納品したとき
「これ他にも流用してるんじゃね?」と勘ぐられたくなければ
面倒でも、「御社専用のコードです」って見える風に手間かけるしかないと思うけど
あと、asp.net は継承って上手くできなかったっけ?
真に共通部分だけでベースクラスつくって、差分は継承後のクラスで書く、とか
Windows フォームなら、バンバン継承して作っちゃってるけど
>>958 文字列は、Webデザイナーが変更するんだ。パラメータにすると、そのパラメータが
どこに格納されていて、どこに表示されるかWebデザイナーに説明するのに余計な手間がかかるんだ。
WebデザイナーはDreamWeaverか、Expression Web2で編集を行なう。
この編集が直観的な出来ないような改造はしたくない。
またパラメータだと、それが正しい場所に埋め込まれて、きちんとDIVのボックス内に収まるか、実際にレンダリング
してみないとわからないし、Webデザイナー側で文字列を好きな位置に増やしたり出来ない。
だから、パラメータ化するのは、かなりのデメリットがあって、それなら↓こっちのほうが
はるかにいい解決方法なんだ。
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
>>959 > B社にソース納品したとき
> 「これ他にも流用してるんじゃね?」と勘ぐられたくなければ
いや具体的に言うとショッピングサイトで、各会社ごとにデザインだけカスタマイズしての納品なんだ。
だから、流用も何も、デザインだけカスタマイズしての納品ということは納品先のすべての会社に了解してもらい、
納得してもらっているんだ。
> あと、asp.net は継承って上手くできなかったっけ?
あなたが、どういうコードを想定しているのかちょっとわからない。
Windowsフォームの場合でも、別の会社に納品するときに
デザインを変更したいことってあると思うのだが、そういうとき、継承で解決するの?
>>960 普通のhtmlページで、たとえばデータベースからのデータで文字が置き換わるだけのようなページだったら、
デザイナにhtmlファイルで作ってもらって、置き換わる部分だけ$name$とかにしとくあれだよ。
963 :
953 :2009/08/27(木) 11:49:09 ID:???
>>962 > デザイナにhtmlファイルで作ってもらって、置き換わる部分だけ$name$とかにしとくあれだよ。
$name$ とかに変更したあとのファイルをデザイナーにまたいじってもらおうと思ったときに
デザイナーが最初に作っていたhtmlファイルとは違うので、デザイナーがその構造を理解するのに
余計な時間がかかる。
あと、DreamWeaverでもExpressionWeb2でも直接.aspxを編集して、Web.UIのControlを含めて
正確にレンダリングできるのでWebデザイナーにレポジトリのaspxを直接編集して欲しいんだ。
そんなわけで、結局、↓こっちのほうが優れたやり方だと感じるんだが。
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
うん、だから好きなやり方でやれば良いじゃん。誰かに怒られるわけでもないし。 あと、htmlファイルはいじらないでそのまま使うんだよ?
965 :
953 :2009/08/27(木) 12:53:42 ID:???
>>964 ん? いじらないの?
ひょっとして、smartyみたいな独自タグ用意して、htmlを書いてそれをaspx側用に置換して使うって話?
あなたの言っていることとは違うのかも知れないが、
htmlを書いてaspxに変換するのは面白いかも知れん。
html → aspx と designer.aspx を自動生成できるように簡単なコンパイラみたいなのを作っておいて、
こいつに対して、View("Label1").Text = "12345"; のように viewとしてアクセスできるような仕組みが
あれば、(MVCフレームワークのように) viewだけ差し替えるなんてことも出来るかも知れん。
postback処理とかある程度自前で書かないといけないのが、アレなんだが…。
こういうフレームワークは勉強のために作ってみたいと思っていたので、いいかも知れん。
>>965 そういうのを世の中ではテンプレートエンジンと言うのだが・・・
普通にDWでaspxのデザインできるから、それで作ってもらえばいいんでないの? サーバコントロールの名前だけ変えないでねって感じで ぺろぺろっとhtmlだけ置き換えたいならASP.NET MVCのほうがいいかもな
>>969 Expressでやったことは無い(当方Pro)が、一応できるよ
インテリセンスもそれなりに利くし、IDEでデザインも弄れる
971 :
nobodyさん :2009/09/01(火) 12:03:04 ID:FS0m+muw
ASP.NET + VB で開発することになりました。 しかしWebで情報をあさると、C#のサンプルばかりで、VBのよさげなページがみつかりません。 あるいは、2002ごろの古いページとか。 MS初心者にむけた、ASP.NET+VBのよいページがあればおしえてください。 なお当方JavaとPHPでのWebプログラミング経験は結構あります。
>>971 SharpDevelopのC#→VB.NET変換機能使うとかどうよ?
オンラインでも変換ツールは色々あるよ
>>971 そんなに変わらんから、C#憶えるのオススメ。
インテリセンスもC#の方が俺は使いやすかった。
PHPからの転向組です。 ASP.NET + VB で、ページの途中で処理を終えるにはどうしたらいいでしょうか。 PHPでいうと <?php if (条件) { echo "<p>ERROR</p>"; exit(); } ?> というコードに相当することをしたいです。 今は <% If 条件 Then Response.Write("<p>ERROR</p>") Else : : End If %> とやっていて、これでも動作はするんですけど、できればPHPのexit()相当のことができると もっときれいにかけるのにと思って質問しました。
976 :
974 :2009/09/01(火) 16:06:48 ID:???
>>975 いえ、Response.End()はたんなるメソッド呼び出しであり、そのあとのコードも実行されますが、
PHPのexit()は構文要素であり、exit()以降のコードは実行されません。
#ちょうど、return文に似たような感じです。
やりたいことは
<%
If エラーがある Then
エラー処理
Else
・・・
If エラーがある Then
エラー処理
Else
・・・
End If
End If
%>
を?x2028;<%
If エラーがある Then
エラー処理
exit
End If
・・・
If エラーがある Then
エラー処理
exit
End If
・・・
%>
のように書きたいということなんですけど、難しいでしょうか。
goto使うとか、 一回しか実行しないDoループでエラー処理後 exit doするとかw
>>976 Response.End以降の処理は実行されないぞ
ホントにそこで停止する。それ以降のhtmlすら出力しやしねえw
もし実行されてるなら、例外拾ってなんかしてないか?
ただ俺はPHPしらないが、PHPのexit()ってそのソース見てる範囲では
単にスクリプトブロックを抜けるだけの命令じゃないのか?
ホントにそこで処理を止めたら、bodyタグとかhtmタグlとか閉じてないhtmlソースになるだろ
PHPからの転校って、PHPのソース移植するのでなければ
もうちょっとASP.NET流に作った方がいいんじゃね
表示したいとこにラベルなりテキストボックスなり配置して、
コードビハインド側で関数作って値セットするとかすれば?
一般的に考えるのなら、ASP.NETで例に記述してるような <%%>内にプログラムを記述するようなhtmlへの実行時バインドするのはやめたほうがいいな Errorの表示をしたいのなら、Labelコントロールを配置してコードビハインドで、 そのLabelにエラーであることを示す文章を表示すべき もちろん、そうすることで別のメリットがあるのなら話は別だけど。
980 :
979 :2009/09/01(火) 19:52:33 ID:???
すまん
>>978 をよく見ず同じことかいてたわ orz
お詫びに次スレ立てるかな
982 :
974 :2009/09/02(水) 21:43:56 ID:???
>>977 一回しか実行しないDoループを使う方法は良さそうですね。
ありがとうございます。
>>978 >Response.End以降の処理は実行されないぞ
実行されませんか?Response.End()は単に、「これ以上レスポンスを追加しない」というだけのことで、
PHPのexit()のように「それ移行の処理は実行されない」なんてことはないと思います。
>もうちょっとASP.NET流に作った方がいいんじゃね
今話題にしているのはロジックの書き方であり、これはASP.NET流に作る作らないとはあまり関係ないような。
>>980 >Errorの表示をしたいのなら
エラーを表示したいわけじゃなくて、単にエラー処理をしてるだけです。表示は特にありません。
>>982 PHPのやり方に捕らわれすぎ
まず、実行時バインドの中でIF文なんかは使わない。
ロジックの話というのなら、ASP.NETでは、様々なロジックを通常のクラスのメソッド内に記述するので、
単にIF文を終えたいのなら、そのメソッドを終わらせるためにreturnすればいいだけ。
自分はC#しかわからないので、C#風に書かせてもらえれば
protected void Button1_Click(object sender, EventArgs e)
{
if (エラーがある1)
{
エラー処理1
return;
}
if (エラーがある2)
{
エラー処理2
return;
}
}
IF文を(あなた曰く)簡潔に書くための、ロジックの書き方ならこれでいいはず。
DynamicDataって使ってる? 今、普段はNullableなフィールドに親子関係を持たせて親フィールドが特定の条件を満たすとNotNullになるようなコントロールを作りたいんだが、 DynamicValidatorに後付けでNullチェックするValidatorを追加するような事は出来るだろうか?
>>983 間違った
×単にIF文を終えたいのなら
○単に処理を終えたいのなら
だな
>>983 <html><head></head>
<body>
<form id="form1" runat="server">
<% Trace.Warn("step1")
Response.End()
Trace.Warn("step2") %>
</form>
</body></html>
これ実行してみろ。step2がトレース出力されないどころか、</body></html>も出力されないから
で、俺はPHPはわからんが、これがPHPのexitなら、</body>や</html>は出力されないのか?
少なくともASP.NETにスクリプトブロックを抜ける命令はないと思う
こういうロジックの組み方はASP.NET流ではないわけだが
まあそれでもあえてこういうロジックのコードでやりたいというなら
スクリプトブロックに関数呼び出しかけばいいんじゃね
<% call hoge() %>
でコードビハインドで
sub hoge()
if エラーがある then
エラー処理
exit sub
end if
end sub
みたいな感じ...
しかし、通常のWEBフォームでResponse.Writeなんて使うのは
ASP.NETの設計としては間違ってると思うがな
>>986 たぶん、純粋にその時点で処理を終了するという、VBでない
クラシックなBASICのEND的なものを欲してるんじゃね?
Formでいうところの、Form.Close()的な。
それはともかく、IF文を入れ子にしたくなくて、途中で処理を中断したいようなロジックなら
select caseを使えばいいんでないかと思うんだが。
select case true
case a >= 50 and a < 100
msgbox "分岐1"
case a >= 100 and a < 150
msgbox "分岐2"
case else
msgbox "分岐その他"
end select
124 名前:就職戦線異状名無しさん[sage] 投稿日:2009/08/18(火) 00:10:04
>>122 ASPなんて今やダレも使ってないがw
どんだけ現場を知らない情弱なんだよw
125 名前:就職戦線異状名無しさん[sage] 投稿日:2009/08/18(火) 21:19:04
ASPってww
いまはjavaかphpだろ
java、phpの技術者需要は今後もなくならない
基幹寄りオープンシステムjavaがなくなることは21世紀中にはないよ
130 名前:就職戦線異状名無しさん[sage] 投稿日:2009/08/20(木) 06:02:52
>>124 うっそだー
俺使ってるもーん
>>125 だからphpにaspとSQLserverだよ
PHP単体でモノが作れると思ってるの?馬鹿なの?
141 名前:就職戦線異状名無しさん[sage] 投稿日:2009/08/22(土) 20:20:01
ASPはVS使うとぐいで簡単に作れるから使われてるよ
いちいち0からソースコード手打ちする会社なんてベンチャーかユー子ぐらい
【志望業界】理系で仕方なくSEに…【行けず】
http://namidame.2ch.net/test/read.cgi/recruit/1242462237/119-
>>987 いやだから、処理を終了したいならResponse.Endでいいだろ
実際は、処理を終了したいんじゃなくて、その処理ブロックを抜けたいだけだろう
で、ASP.NETにはスクリプトブロックを抜ける命令はないから、
関数呼び出しにして関数抜けろとか、空ループ回してループ抜けろとか言ってるんじゃないか
>>989 あーそうだね
だも処理を抜ける処理としての質問ならphpのexitを例にするのは
ちと意味がちがわなくね?って感じがするね
単にif文を入れ子にしたくないなら
>>988 のselect caseでいいと思うんだけど。
いや、切実な問題ならともかくさ、 割とどうでもいいことで、こういうときうまく書くやり方無いのかなってことでしょ? 形は違うけどいろんな言語やってるとそう思うことは多いよ。 設計が間違ってるとか、メソッドにとかはそりゃそーかもしれんけど、聞いてる人は分かってるだろうし、聞きたいこととは違うかと。
だから簡潔に記述するならselect caseでいいじゃん それにプロシージャ内に書くことがほとんどだからreturnと同義じゃん
993 :
nobodyさん :2009/09/03(木) 14:19:10 ID:1JuFFg5d
うーん。 エラーチェック1 処理1 終了 エラーチェック2 処理2 終了 エラーチェック3 処理2 終了 てやらない? ここでいう終了ってのが無いと、以下全部elseで囲ってネスト深くなっていやっていう話でしょ? 同じ変数の範囲とかのチェックなら selectでもいいかも知れんけどさ。 VBはbreak無しでOKなんだっけ?
なんでそんなにインラインに書くことに拘るんだろ コードビアインドすれば楽になれるのに
いや、だからそうじゃなくて。 コードビハインドの中でもこういう書き方することあるだろ?
コードビハインドの中ならメソッド内だからend sub
>>996 それだと、このエラー処理の後の共通処理したいところがすっ飛んじまうって言ってるじゃない。
言ってないかw
まあ、どーでもいい話だな。
>>993 やるけど、そんなのエラーチェックだけ、別メソッドにするしょ?
だから、一つでもエラーが発生して即終了なら、return falseで終了し返り値にfalseを返すし、
すべてのエラーチェックを通る必要があるなら、bool returnValue = trueを宣言して、
エラーチェック内の処理でreturnValue = returnValue & false;を計算し、
メソッドに返り値でreturnValueを返せばいい。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。