【質問】ASP.NETスレ Part5【議論】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2009/01/23(金) 09:46:51ID:???Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
【質問】ASP.NETスレ Part3【議論】
http://pc11.2ch.net/test/read.cgi/php/1160355849/
【質問】ASP.NETスレ Part4【議論】
http://pc11.2ch.net/test/read.cgi/php/1184683786/ (dat落ち?)
あんまり需要ないのかもしれませんが。。。
0002nobodyさん
2009/01/23(金) 09:47:26ID:???http://www.microsoft.com/japan/msdn/asp.net/
MSDN
http://www.microsoft.com/japan/msdn/
Visual Studio 2005 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/
ASP.NET Web Matrix Project
http://www.microsoft.com/japan/msdn/asp.net/webmatrix/
Microsoft ASP.NET クイック スタート チュートリアル
http://ja.gotdotnet.com/quickstart/aspplus/default.aspx
0003nobodyさん
2009/01/23(金) 13:44:50ID:???http://www.asp.net/mvc/
0004nobodyさん
2009/01/26(月) 04:41:30ID:???0005nobodyさん
2009/01/27(火) 08:51:00ID:???プロバイダの無料ホームページサーバーがASPに対応していないと転送してもうごかないんですか?
0006nobodyさん
2009/01/27(火) 08:51:33ID:0yzijSJe0007nobodyさん
2009/01/27(火) 11:09:24ID:tugN284u教えてくれなくてもいいからこのスレに人がいるのかだけでも教えてくれ!!!
0008nobodyさん
2009/01/27(火) 13:38:13ID:???VWD Express入れれば、テストまではXP HOMEで大丈夫だよ。
2行目は、対応謳ってないところでは無理です。
0009nobodyさん
2009/01/27(火) 14:22:32ID:???ずばりなんでこのスレは人がすくないんでしょうか?
0010nobodyさん
2009/01/27(火) 14:47:58ID:???本来はこっちだと思うがム板でも間違いではないね
ちなみに向こうも進行は遅い
MSのドキュメントが充実してるのか、書籍が充実してるのか・・
ASP.NETについて語ろう
http://pc11.2ch.net/test/read.cgi/tech/1152591404/
0011nobodyさん
2009/01/28(水) 15:08:45ID:???さらに、プロパイダがASPに対応といった場合、
ここで言っているASPやASP.NETとは全く別の、
アプリケーションサービスの提供という意味のときもある。
0012nobodyさん
2009/01/28(水) 18:38:10ID:CAkFRKAi検索してもASPはなかったんですが
0013nobodyさん
2009/01/28(水) 22:21:48ID:sY0o9h6Nなければ対応してない
0014nobodyさん
2009/01/29(木) 00:15:41ID:???アプリのヘルプとかをWEB形式にしてサーバーなくてもアプリ配布だけでaspxファイル見えるようにできるんですか?
0015nobodyさん
2009/01/29(木) 00:28:11ID:???共用Webサーバーで使うようなもんじゃないよ、基本的に。
で、大手が対応するも何も、ついでに対応できるようなもんじゃないから、
ASP.NETのホスティング業者を探してください。
0016nobodyさん
2009/01/29(木) 00:28:35ID:???0017nobodyさん
2009/01/29(木) 00:39:12ID:???VSに入ってるからやってみたかったんだけど持ち腐れくさい
せめてアプリに埋め込みぐらい出来てほしかった。終わった・・・
0018nobodyさん
2009/01/29(木) 00:58:57ID:???各自のPCで処理させるほうがいいに決まってる
0019nobodyさん
2009/01/29(木) 01:31:10ID:???アプリに埋め込むようなもんじゃないだろ
お前が何をしたいのかわからんが、たぶんお前のやりたいことにASP.NETはイランと思われ
0020nobodyさん
2009/01/29(木) 02:03:52ID:???0021nobodyさん
2009/01/29(木) 03:23:35ID:???0022nobodyさん
2009/02/01(日) 15:06:08ID:???多少見た目が悪くても問題無い所で活躍すると思うけどなぁ。
絵心が必要な部分はFLASHで充分。
0023nobodyさん
2009/02/01(日) 20:22:47ID:???「システムの管理画面」をリッチクライアントっぽく作りこむ意味がわからん……
0024nobodyさん
2009/02/04(水) 11:58:05ID:???VisualStudio2008でレガシーASP(.NETじゃないASP)の開発って可能ですか?
0025nobodyさん
2009/02/04(水) 15:50:53ID:???で index.aspx をデフォルトの拡張子にする、みたいなことはできますか?
ASP.NET 開発サーバはそういうことはできないのかな。。
0026nobodyさん
2009/02/05(木) 11:15:34ID:zvOyitUX0027nobodyさん
2009/02/09(月) 03:06:51ID:???一般的な、「a.aspxページのボタンを押してb.aspxに遷移」の処理だと
ブラウザに表示されているボタン押す
↓
a.aspxにPostBack
↓
a.aspx.csの `Button_Click` が呼ばれて
↓
そこに記述してあるresponse.Redirect("b.aspx")で
↓
b.aspxが表示
となると思いますが、b.aspxまで来た時のRefererを加工しておきたいんです。
HttpRequest.UrlReferrerは参照しか出来ないようですし。
0028nobodyさん
2009/02/09(月) 07:57:00ID:???あまり当てにしたプログラムはつくらないほうがいいと思うんだな
a.aspxから呼ばれたってのを調べたいときは
sessionでも使ってチェックしたほうがいいんじゃないかな
0029nobodyさん
2009/02/10(火) 22:06:20ID:???クライアントからの要求時に送られてきたSoapエンベロープ内の
文字列を丸ごと取得したいのですが、何か方法はないでしょうか?
0030nobodyさん
2009/02/14(土) 13:14:06ID:???0031nobodyさん
2009/02/14(土) 16:33:05ID:cqYeov/90032nobodyさん
2009/02/16(月) 18:43:19ID:???div余計なんですが、どのように使用しろというのですか
除去することができれば教えて下さい。
0033nobodyさん
2009/02/16(月) 19:56:52ID:???http://www.asp.net/CSSAdapters/GridView.aspx
たしかにhtmlソース汚いよね。
0034nobodyさん
2009/02/17(火) 18:52:18ID:TWz5D9vv0035nobodyさん
2009/02/17(火) 19:25:49ID:VOp+dOz2VS.net2008 で作った VB.net コンソールアプリを
実行ファイルに指定しているのですが、ビルドされた
実行ファイルをブラウザから参照すると、実行ファイル
をダウンロードさせるような動きになってしまいます。
ところが、ビルド時に出力された、xxxx.vhost.exe を
ブラウザで指定して見ると、実行結果はエラーになり
ますが、サーバー側で実行しようとします。
この違いはどのようなことが原因と考えられるでしょか。
IISの設定では、EXEファイルを保存したディレクトリの
実行アクセス権を、「スクリプトおよび実行可能ファイル」
に設定しています。
0036nobodyさん
2009/02/17(火) 19:32:48ID:???0037nobodyさん
2009/02/17(火) 19:49:41ID:VOp+dOz2ごめん!お騒がせしたおわびに、こんな感じで。
・環境
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
0038nobodyさん
2009/02/17(火) 19:51:29ID:VOp+dOz2test/html とか書いてましたw
IEで見たらダウンロードのダイアログに、xxx.exe
と出ていたのでてっきり実行ファイルをDLしようと
していたのかと思ったら、存在しない content-type
ということで、IEがexeのファイル名のまま、CGIから
戻ってきた文字列をファイル保存しようとしていた
だけでしたorz
文字の間違いには気をつけようぜ!w
0039nobodyさん
2009/02/26(木) 05:59:12ID:???0040nobodyさん
2009/02/27(金) 18:17:47ID:aU5MUsG5ツールボックスより標準のasp TextBoxを配置。
そのTextBoxにMaskedEditExtenderをくっつけ、
CultureName:ja-JP
Mask:99:99
MaskType:Time
と設定。
MaskedEditValiDatorをくっつけ、
InvalidValueMessage:エラー
と設定。
ここまでは問題なくエラーチェックをしてくれますが、
aspの標準のボタンを設置し、押すと正常でもエラー表示されます。
年月日は大丈夫だったので私の設定ミスでしょうか?
0041nobodyさん
2009/02/27(金) 21:48:56ID:???プログラム板にもあったから、そっちに常駐してたよ
asp.netこんなに便利なのにユーザ少ないよな
まったくかなしいぜ
0042nobodyさん
2009/02/28(土) 21:45:49ID:3vV5LoA6一番分かりやすそうでした。
aspとjavaと.netとCはどれが一番人気ですか?
0044nobodyさん
2009/02/28(土) 22:39:55ID:3vV5LoA6「.NET」とは「.NET Framework」
と何かに記載されていました。
「.NET」にもいろいろ種類があるのでしょうか。
「VB.NET」「ASP.NET」とのちがいはなにでしょうか・・・。
0045nobodyさん
2009/02/28(土) 23:42:56ID:???VB.NETは.NET Frameworkの言語のひとつ
0046nobodyさん
2009/02/28(土) 23:53:48ID:3vV5LoA6ありがとうございます。
ASP.NET内でVB.NET言語を使用するイメージですね。
あと・・・もう1つ質問なのですが・・・
.NET Framework をいろいろwebで調べましたが、概念がよく解りません。
webサーバー上に、別のwebサイトの検索結果やwebアプリケーションの実行結果を自動で引っ張ってきてくれる
便利な環境というイメージでしょうか。
0047nobodyさん
2009/03/01(日) 00:45:49ID:???.net frameworkは便利な部品がいっぱい集まった巨大なライブラリみたいなもん。
たとえばファイルを開いて閉じるのにC言語だと10行かかなくちゃいけないところを
5行で済む感じみたいな
これらを使うとお前さんがやりたい「別のwebサイトの検索結果やwebアプリケーションの実行結果を自動で引っ張ってきてくれる」
みたいなことがPHPやパールでコーディングするよりは楽に出来ますよってだけ。
0048nobodyさん
2009/03/01(日) 00:48:15ID:???0049nobodyさん
2009/03/01(日) 10:42:16ID:rplbU7vtありがとうございました。
企業HPでgoogleマップを展開してくれるみたいなものがマシュアップというのですね。
高度な技術ですね。
0050nobodyさん
2009/03/02(月) 22:40:22ID:TS5QNvIN検索ページ→詳細ページ
みたいに主キーをSessionで詳細ページに渡して詳細表示させるような場合、
主キーを格納してるセッションはどこで破棄してる?
戻るボタンで戻った時や、リロードされた場合に備えて自動破棄(なければ切れました表示)が普通かな?
また、�@検索ページ→詳細ページ→�A検索ページ
みたいに元のページに戻る時、�@と同じ検索条件の一覧を�Aでも表示させておきたい場合は、
やはり�@の検索条件をSessionに保存しといて、�Aで再現するのが普通?
場合によっては、検索条件をクリアしたいときもあると思うから、そんなときはSessionクリアすればいいんだろうけど、
なんか力業で強引な気がして、もっとスマートな方法ってないのかな?
0051nobodyさん
2009/03/04(水) 16:55:08ID:???>リロードされた場合に備えて自動破棄
自動廃棄ってのはどういう事を言ってるの?
セッションは自分で廃棄しなければ、通常はタイムアウトで廃棄されるだけだと思うが
渡したい情報の量とかにもよるだろうが、俺ならクエリ文字列として受け渡しするな
0052nobodyさん
2009/03/04(水) 18:13:03ID:???自動破棄というのは、仰るとおりタイムアウトで破棄されるってこと。
書き方が紛らわしかったね。すまん。
クエリ文字列ということは、遷移する間、条件となるデータをhiddenfieldなり、
viewstateなりで持ち続けるってことだよね。その方法かセッションしかないよねぇ。
うーん。
0053nobodyさん
2009/03/04(水) 23:17:46ID:???GETパラメータを想定してると思われます。
0054nobodyさん
2009/03/05(木) 23:06:37ID:???0055nobodyさん
2009/03/06(金) 01:46:04ID:???0056nobodyさん
2009/03/06(金) 04:41:06ID:???0057nobodyさん
2009/03/11(水) 19:26:02ID:cFXXjK9z複数の結果を一つのページに表示する場合、
それぞれに対してSqlDataSourceを作るのが普通ですか?
それとも自力でごりごりコードファイルにSQLを書いていくものでしょうか?
またはもっと素敵な方法ありますか?
0058nobodyさん
2009/03/12(木) 01:36:38ID:???�@検索ページ→詳細ページ→�A検索ページ
こういうとき、
�A検索ページへの検索条件引渡しは、GETパラメータ(QueryString)で渡すとして、
詳細ページに移動した時点での�@の検索条件はどこに保管しとくのがいいのやら。
sessionに持つと、2窓同時操作ができないのよね・・・
0060nobodyさん
2009/03/13(金) 03:40:19ID:???0061nobodyさん
2009/03/13(金) 20:08:50ID:???詳細ページでもGETパラメーターか
なるほど
詳細ページでは検索条件を直接使わないから、
詳細ページにもGETパラメーター渡すっていう考えに及ばなかった
すっきりしたよ
ありがとう
0062nobodyさん
2009/03/16(月) 19:35:40ID:???自分の場合は、ほとんどC#2.0のRepeaterにDataSetをDataBindしているので、
よほどのことがない限り、自力で合計して自力で合計値を表示させてる。
SQLで集計行を儲けるクエリがあったと思うよ
0063nobodyさん
2009/03/16(月) 19:48:12ID:???>sessionに持つと、2窓同時操作ができないのよね・・・
セッションキーだけをGETやPOSTで渡すという方法もあるよ
検索時に検索ボタンのクリックで、検索条件を納めた情報をユニークなキーでセッションに保存して、
ユニークなキーをGETやPOSTで持ち回りし、検索ページ表示時にユニークキーから
保存したセッションから検索条件を取得して再現するとか。
0064nobodyさん
2009/03/17(火) 13:27:16ID:lh6o9g9Jおりましたら教えて下さい。
SPREADにて作成したCELLに数字(例:01)を入力し
実行時にブレイクポイントを張って
入力した数値を見てみると
「01」ではなく「1」としてデータが格納されております。
これはSPREADの仕様なのか
CELL作成時に、書式設定可能なのか
教えて頂けますでしょうか。
006564
2009/03/17(火) 13:28:09ID:lh6o9g9JVBです。
0066nobodyさん
2009/03/17(火) 15:32:46ID:???SPREADってグレープシティのコンポーネント?
よくわからないけど、Excelと同じなら、Excelでも入力した文字が数値に変換可能なら、
自動的に数値に変換して表示したりするので、たぶん仕様だと思う
文字列として表示したいのなら、そのセルまたは列の属性を決めるプロパティがないかな?
たとえば日付型、文字型、数値型とか。
0067nobodyさん
2009/03/17(火) 16:47:17ID:???0068nobodyさん
2009/03/31(火) 10:25:24ID:???0069nobodyさん
2009/04/04(土) 01:24:29ID:???これをプログラムソースのみで行うことは可能でしょうか?
可能であれば方法も教えて頂けませんでしょうか?
0070nobodyさん
2009/04/04(土) 18:57:54ID:???あれはプロキシクラス作ってるだけの気がするから、そのプロキシクラスと
同じようなクラスを自分でコーディングすればできるんじゃね
ウィザード使わずにプロキシクラス作りたいって話なら、
Wsdl.exeの使い方を調べてみれば
0071nobodyさん
2009/04/13(月) 03:26:26ID:???0072nobodyさん
2009/04/15(水) 20:35:37ID:???0073nobodyさん
2009/04/17(金) 16:12:21ID:???0074nobodyさん
2009/04/17(金) 18:04:52ID:???第二十一条
債務者に破産手続開始の原因となる事実の生ずるおそれがあるときは、債務者は、裁判所に対し、
再生手続開始の申立てをすることができる。債務者が事業の継続に著しい支障を来すことなく
弁済期にある債務を弁済することができないときも、同様とする。
2 前項前段に規定する場合には、債権者も、再生手続開始の申立てをすることができる。
(疎明)
第二十三条
再生手続開始の申立てをするときは、再生手続開始の原因となる事実を疎明しなければならない。
2 債権者が、前項の申立てをするときは、その有する債権の存在をも疎明しなければならない。
0075nobodyさん
2009/04/17(金) 18:09:37ID:???偉い人にはそれが分からんとです
0076nobodyさん
2009/04/17(金) 18:46:47ID:???Model 型付きDataSetや集計をするクラス、ストアド、SQL CLR
View aspxとコードビハインド
Controller 入力チェック、重複チェック、楽観ロック
でしょ?
ViewにControllerを書いてしまうことが多いけど、
それさえちゃんとすれば、ほとんど実行できてるに等しいんじゃね?
0077nobodyさん
2009/04/17(金) 23:19:49ID:???MVCってのはオブジェクト指向と同じで幾つかの宗派がある。
0079nobodyさん
2009/04/18(土) 02:53:40ID:???シングルファイルだと普通に呼べるんですが・・・
0080nobodyさん
2009/04/18(土) 10:30:16ID:???008179
2009/04/18(土) 13:32:54ID:???レスどうも。おかげで気づきました。
0082nobodyさん
2009/04/24(金) 13:01:47ID:???すいません、初歩的な質問かもしれないのですが、
うちの会社では本番機サーバーにプログラムをリリースする時に、コンパイル済みdllファイルとソースファイル(aspx、resx、cs)を、
全部アップしてリリース作業終了となっています。
本来はdllだけでも良かったりしますか?
0083nobodyさん
2009/04/24(金) 13:17:42ID:???WEBアプリ?
0085nobodyさん
2009/04/24(金) 13:42:39ID:???発行するようにしてるんであればそれに任せりゃいいんじゃね?
ソースをどっ化のファイル鯖に上げるとか言うのなら話は別だけど
0086nobodyさん
2009/04/24(金) 16:03:29ID:???何かの参照設定してdll読み込んでるならDLLと両方の場合もあるんじゃ?
だから、この場合、たぶんなんかのライブラリとかを参照設定して利用してると考えれば
両方アップすればいいんでね?
0087nobodyさん
2009/04/24(金) 17:54:58ID:???>>86
ありがとうございます。
何らかの参照設定等が行われていると考えて、とりあえずこのままいきたいと思います。
ありがとうございました。
0089nobodyさん
2009/04/24(金) 21:51:36ID:???ってんだからWebアプリでそ
だったらCSとか不要。
dllとかとaspxはもちろんいる。
0090nobodyさん
2009/04/25(土) 02:15:15ID:???>>89
度々すいません。
開発環境で試しにresxとcsファイルを
別の場所に退避させても普通に動作しました。
会社の人にも確認したところ、アップロード作業には
FFFTPを使用するのですが、複数画面のリリースが発生した場合
いちいちCTRL押しながらaspxファイルだけ選択してアップではなく、
シフト押しながらずらっとまとめて選択して
アップする方がラクだからとの事でした。
どうもありがとうございました。
0091nobodyさん
2009/04/25(土) 03:10:57ID:???0092nobodyさん
2009/04/25(土) 13:05:13ID:???webサイトを発行っていうかプリコンパイルしてないのか
0093nobodyさん
2009/04/25(土) 13:19:02ID:???0094nobodyさん
2009/04/25(土) 14:42:14ID:???0095nobodyさん
2009/04/25(土) 15:26:07ID:???「デスクトップにショートカット作っとくといいよ。」と同程度のアドバイスが理解できなくて
こんなところでお門違いな質問しちゃっただけだよ。
0096nobodyさん
2009/04/25(土) 16:05:53ID:???0098nobodyさん
2009/04/25(土) 22:57:36ID:???だいたいシステム要件は顧客の希望なわけで
0099nobodyさん
2009/04/25(土) 23:05:51ID:???この場合自社が顧客なようですが
わけもわからず使ってるあたりがウフフな感じですね
この運用を今もやっているということは・・・・
だいたい想像がつきますね
0100nobodyさん
2009/04/25(土) 23:12:55ID:???0102nobodyさん
2009/04/25(土) 23:15:07ID:???0103nobodyさん
2009/04/25(土) 23:17:21ID:???0104nobodyさん
2009/04/26(日) 00:52:04ID:???へんにアップデートするとおかしくなる可能性もあるからな
セキュリティアップデート以外の余分なものは入れないのが普通だろ
0105nobodyさん
2009/04/26(日) 01:38:16ID:???まぁふつう鯖分けるとか対策するだろうけどさ
0106nobodyさん
2009/04/26(日) 02:09:45ID:???動作するかどうかなんて検証する余裕なんてないよ
まして他社製が動作してたら検証の余地なんて無い
仕方ないからその鯖にのせるために
新しいテクノロジを使えない例なんてゴマンとあるよ
0107nobodyさん
2009/04/26(日) 02:12:10ID:???果ては技術論にまで及ぶのが2chクオリティ
>>90
通常はリリース用のディレクトリを用意しておき、
開発が完了したら「Webサイトの発行」で出力先をリリース用ディレクトリを指定する。
(直接Webサーバを指定してもいいが)
本番環境へのアップロードはリリース用ディレクトリの中身全部をFFFTPで送ってやればおk
(それこそシフト押しながらずらっとまとめて選択してw)
ソースはどう管理してるのか知らないが、VSSなんかの場合はコミットして
タグはっておけばいいんじゃね?
ソースをそのままアップしても問題なく動くけど、セキュリティ意識を持つなら避けるべき。
昨今は内部犯行も多いしね・・
0108nobodyさん
2009/04/26(日) 16:19:55ID:???0109nobodyさん
2009/04/26(日) 19:48:39ID:???0110nobodyさん
2009/04/27(月) 20:06:01ID:???管理するクラスを記述してみたんだけどこういうのって有用かな?
0111nobodyさん
2009/04/28(火) 12:11:09ID:???果たして必要かと言われると微妙。
それが必要される背景とシステム的な需要は
分けて考えられるべきではないかと。
要するに場合による。
0112nobodyさん
2009/04/28(火) 15:40:55ID:???帰宅したらどこかにうぷして公開してみるよ
0113nobodyさん
2009/04/28(火) 17:24:00ID:???こんな感じ
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>();
0114nobodyさん
2009/04/28(火) 19:29:51ID:???なんちゅう名前付けてんだw
つうか、あれだ・・・
殴打の作者だったのか
お世話になりました。orz
うちでも似たようなの作りはしてる。
ページ単位で利用するセッションデータの管理と破棄の機能もくっつけてる感じのやつだけど
Redirectで飛びまくるページなんかの条件保持とかに使ったりかなぁ…
ケースバイケースで使えるんじゃないかな?
と思う
0115nobodyさん
2009/04/28(火) 20:26:35ID:???( ・∀・)⊃Д´)
(O / つ つ ←>>114
人 Y ゝ ) )
し(__) し し
なるほど。
windowsformでは、staticを利用したグローバル変数的なものを使う場合があるけど、
それをasp.netのsessionを利用して実現できないかと思ったのと、
かつインテリセンスを利用可能にして、タイプミスしないようにするためにと思って、
ジェネリクスを利用した似非singletonパターンぽい感じにしてみたんだけど、
わりとみんな似たようなことは考えてるんだね
0117nobodyさん
2009/04/29(水) 01:30:43ID:???処理中にマウスをwait(砂時計)にする方法しりませんか?
ググりかたが悪いのか、WindowsForm しかでてきかません・・・
0118nobodyさん
2009/04/29(水) 02:16:14ID:???メールアドレス :TextBox 検証コントロール:RequiredFieldValidator と RegularExpressionValidator
メールアドレス(確認) :TextBox 検証コントロール:RequiredFieldValidator と CompareValidator
メルマガ配信 :CheckBox(配信希望のときチェック)
[送信]ボタンクリックで、確認画面を表示
のようなWebフォームを作りたいのですが
検証条件
1.氏名入力必須
2.メルマガ配信がチェック有りの場合は、メールアドレス入力必須
3.メルマガ配信がチェック無しの場合は、メールアドレス入力任意
のようにしたいのですがアドバイスお願いします。
0119nobodyさん
2009/04/29(水) 03:23:09ID:???マウスカーソルを出してるのはクライアントだから、
サーバ側のプログラムでマウスカーソルを変えることはできません
また、クライアントはサーバが処理中かどうかはわかりません
WEBのアプリってのはそういうもんです
>>118
メールアドレスの必須入力は、CustomValidator使って検査
0120nobodyさん
2009/04/29(水) 12:49:22ID:???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");
でカーソルをデフォルトに戻す
0121nobodyさん
2009/04/29(水) 12:57:41ID:???validatorは型どおりのだと便利だけど、
少し複雑なことさせようとするととたんに不便になったり
結局、自分は自分で検証してlabelにエラーメッセージを表示させてるよ
0122120
2009/04/29(水) 13:02:38ID:???標準に戻すだけなら、
this.TestDiv.Style.Clear();か
this.TestDiv.Style.Remove("cursor");でいいと思うけど、
postbackされると自動的にカーソルが元に戻ってしまうっぽいので、
何もしなくてもいいのかもしれない
あんま検証してないけどいろいろ試してみると面白いかも
0123118
2009/04/29(水) 15:48:19ID:???(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のサイトを見てもまだ???な状態です。
0124nobodyさん
2009/04/29(水) 18:46:34ID:???クライアントのスクリプト使うなら、Ajax使わなくてもできるような気がする
>>123
とりあえず入門書買ってこい
チェックボックスの変更でバリデータの有効/無効が切り替えられるのは、
ポストバックが発生した後だってことはわかってるか?
ポストバック発生しても切り替わってないってならソース晒せ
IsValidは検査に通ったかどうか設定する
0125nobodyさん
2009/04/30(木) 01:34:00ID:???そうすりゃテストとか死ぬほど楽なんだけどなぁ。
0126nobodyさん
2009/04/30(木) 01:45:18ID:???0127nobodyさん
2009/04/30(木) 13:04:53ID:???0128nobodyさん
2009/04/30(木) 13:06:45ID:???0129nobodyさん
2009/04/30(木) 18:37:25ID:8hdVVO13みんなリテラルにつっこんでるの?
0130nobodyさん
2009/04/30(木) 18:56:16ID:???定型ならLabelに記述するし、テーブルで行によって変化するならRepeaterを使ってしまうから
仮にhtmlを埋め込み式で出力したい場合でも、
public string Nullpo1()
return "ぬるぽ";
public void Nullpo2()
Response.Write("ぬるぽ");
をコードビハインドに定義して
<% =Nullpo1()%>
<% Nullpo2();%>
をhtmlに埋め込めばいいんでないの?
phpと同じだし、そんな大変かな?
0131nobodyさん
2009/04/30(木) 21:17:04ID:???HTMLの生文字列を出力したくなったら、
設計がおかしい(少なくともASP.NET向きではない)と思う。
Labelに<br />をたまに打つ位だな。
0132nobodyさん
2009/05/01(金) 10:28:34ID:2Yd9vHgr<?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>
上記の繰り返しなどをコードビハインド?上で
リテラルなどに突っ込んで出力とかは出来るけど、
デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・
0133nobodyさん
2009/05/01(金) 12:24:34ID:???後者はいろいろやり方があるけど、
例えばある特定の場合のみ表示させたいhtmlタグがある場合は
Visible=falseのPanelを配置して条件によってVisible=trueにして表示させる
または複数の場合分けが存在しhtmlをごっそりと入れ替えたい場合には
MultiViewとViewを利用して表示する条件に従って表示させたいViewを表示させるようにする
>上記の繰り返しなどをコードビハインド?上でリテラルなどに突っ込んで出力とかは出来るけど、
これは完全にRepeaterコントロールの範疇のような気がする
0134133
2009/05/01(金) 12:33:01ID:???<body>
<form id="form1" runat="server">
<% for (int i = 1; i < 10; i++) {%>
ぬるぽ
<%}%>
</form>
</body>
実行結果「ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ 」
0135nobodyさん
2009/05/01(金) 13:17:49ID:???>デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・
コードビハインドの理想は、デザインとコードの完全な分離なんだ
コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる
デザインするファイル(*.aspx)には一切のコード書かない
コードが必要なとこはすべてコントロールを置く。必要なコントロールがないなら作る
コードはすべてコードビハインド(*.aspx.cs,*.aspx.vb)に書く
これがasp.netなWEBアプリ開発の基本的な理想形
まあ実際は実行時バインド(<%= %>)とか便利なんで使いまくりなんだがなw
0136nobodyさん
2009/05/01(金) 13:32:14ID:???http://codezine.jp/article/detail/425?p=1
まーphpとかclassaspのようなwebとして考えるんじゃなくて
windowsformの気持ちで取り組んだほうがいいのかもしれない
0137nobodyさん
2009/05/01(金) 13:53:38ID:2Yd9vHgr入れ子も出来るみたいだし、それなりに使えるかも。
ただ、繰り返し中の条件分岐を作るのは面倒くさそう。
Panelの表示・非表示は思いついたけど、
Panelって<div>タグに置換されるからちょっといやな感じ。
中身は出力するけど、<div>タグには置換されないならありかも。
><% for (int i = 1; i < 10; i++) {%>
上記の使い方が出来ないと思い込んでいたけど、
今日試してみたら出来た。
色々検索して探しても、そんな情報が見つからなかったからな。
みんな使っていないって事か?
>コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる
もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。
HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。
0138nobodyさん
2009/05/01(金) 13:54:29ID:2Yd9vHgrコードビハインドにパブリックな Hashtableを持たせて、
出力するデータを全て突っ込んで出力することにしました。(邪道?)
↓こんな感じ
<% if value("flg") then %>
<%= value("data") %>
<% end if %>
<% for each i as string in value("list") %>
<%= string %>
<% next %>
フリーでテンプレートエンジンもあるようなので、
時間があったら試してみたいです。
0139nobodyさん
2009/05/01(金) 14:56:32ID:???旧aspの頃にはよくやってた
>もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。
>HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。
逆だ。デザイナーに一切のコード見せなくするのが狙い
まあ、プログラマーが一切html触らないのは理想だが、
これはさすがにちょっと無理が多いからな
ホントは、htmlのレンダリングに関することは、コントロール作成者の役割で
プログラマの役割じゃない、ってのが理想形なんだろうな。
(まあコントロール作成者はプログラマなんだがw)
asp.netのコントロールはレンダリング相手によって出力するhtml変えるからな
少なくとも
><% if value("flg") then %>
><%= value("data") %>
><% end if %>
これは関数化してこの前後のif、end if文ぐらいはコードビハインドに入れてくれと思う
0140nobodyさん
2009/05/01(金) 15:03:27ID:???<table id="table1" runat="server">
にしてコードビハインドで
this.table1.Visible = false
でもいいんでないかな
あと、よほど遠回りになるなら別だけど
多少のことなら「面倒」を理由に避けるのはいかんと思うw
0141nobodyさん
2009/05/01(金) 15:40:26ID:???ASP.NET MVCを使う方が良いと思う。
0142nobodyさん
2009/05/01(金) 15:52:57ID: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 %>
0143nobodyさん
2009/05/01(金) 16:16:42ID:???動的にアンカーの表示非表示を行うならこうすればいい
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;
}
}
0144nobodyさん
2009/05/01(金) 17:16:36ID:2Yd9vHgrこういった概念などはわかるんだけど、
デザイナとの分業を考えたときに難しいかなと。
例えばデザイナがアンカーテキストに taget="_blank" を
入れたい場合、わざわざプログラマーに頼む感じになると難しいです。
0145nobodyさん
2009/05/01(金) 17:40:36ID:???デザイナがタグをこうするだけじゃん
<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank">HyperLink</asp:HyperLink>
0146nobodyさん
2009/05/01(金) 17:42:10ID:???ブログラマ全く関知する必要ないんだが?
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() %>
だけかいときゃいい。余分なコード見せる必要ないだろ
未検証だから間違っててもしらね
理想はこういったものはコントロールにするんだよ。
そうすれば、デザイン画面に表示するものも自分で設定できるから
0147nobodyさん
2009/05/01(金) 17:53:56ID:???<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;
}
0148nobodyさん
2009/05/01(金) 18:43:59ID:2Yd9vHgrなるほど、runat="server"をつければ変更出来るのですね。
勉強になります。
ASPタグを使わずにHTMLタグの繰返しを行う場合は、
Repeaterを使うのがベストですかね?
0149nobodyさん
2009/05/01(金) 19:24:31ID:???0150nobodyさん
2009/05/01(金) 19:54:38ID:???ASP.NETの実践的な本は少ないからね。
0151nobodyさん
2009/05/01(金) 20:09:09ID:???それより、なんでデザイナに対してそこまで気を遣わなければならないかを
記述したほうがもっと良い解決方法が浮かぶと思う
0152nobodyさん
2009/05/01(金) 21:04:22ID:???ASP.NETはPHPと大きく違うよねー。
PHPだとHTMLに埋め込むだけだし、
Dreamweaverも対応しているからデザイナと作業しやすいんだよね。
0153nobodyさん
2009/05/01(金) 21:11:41ID:???>PHPだとHTMLに埋め込むだけだし、
それもできるよ?
0154nobodyさん
2009/05/01(金) 21:16:03ID:???じゃあ、なんでコラボしにくいのかなぁ。
0155nobodyさん
2009/05/01(金) 21:21:36ID:???0156nobodyさん
2009/05/01(金) 21:23:30ID:???0157nobodyさん
2009/05/01(金) 21:32:25ID:???0158nobodyさん
2009/05/01(金) 21:45:47ID:???0159nobodyさん
2009/05/01(金) 21:51:57ID:???0160nobodyさん
2009/05/01(金) 22:55:30ID:???0161nobodyさん
2009/05/02(土) 00:12:57ID:???0162nobodyさん
2009/05/02(土) 00:14:45ID:???0163nobodyさん
2009/05/02(土) 00:39:28ID:???時々タイムアウトしていないのに不意にセッション記憶値が
消える事がありこれを解決したいと思っています。
InProcで動かしているのでワーカープロセスがリサイクルしている
せいと思うのですがリサイクルのイベントログを仕込んでも
なにもログがでません。
他に何か思いつくことがありますでしょうか?
環境
・Windows2003、IIS6、DotNet1.1
・IISの設定画面でワーカープロセスがリサイクルしそうなのを
すべてOFFした。
・DotNet1.1、VS2003でビルドしたアプリをデプロイ
長文すみません。
0164nobodyさん
2009/05/02(土) 00:43:29ID:???パフォーマンスカウンタで確認してるか
0165nobodyさん
2009/05/02(土) 00:45:37ID:???ttp://technet.microsoft.com/ja-jp/library/cc756146.aspx
0166nobodyさん
2009/05/02(土) 05:13:03ID:???0167nobodyさん
2009/05/03(日) 01:07:20ID:???必ずしも長いIDが生成されるわけではないが、場合によっては
.aspxファイルに指定したIDと出力されたhtmlのIDが一致しない
たとえばリピーターなんかでそのタグを繰り返すと、
識別できるように繰り返されたタグに個別のIDが振られる
>>159
ID指定でCSS適用させてると問題になるかもな
後はサーバコントロールがプロパティからCSS生成したりしやがる時があったような気が
0168nobodyさん
2009/05/03(日) 01:17:48ID:???思いつくことってのはセッションが消える理由か?
クライアントかプロキシがセッションクッキーぽいしてるんじゃね
0169nobodyさん
2009/05/03(日) 11:14:18ID:???わかりやすい説明だね。
マスターページの時もIDが長くなるよね。
こんな記事があるということはCSSが簡単ということはないんじゃない。
「ASP.NET 2.0を使ってCSS対応のWebサイトを作成する」
ttp://japan.internet.com/developer/20070220/27.html
0170nobodyさん
2009/05/03(日) 11:17:11ID:???ttp://www.codeplex.com/cssfriendly
0171nobodyさん
2009/05/03(日) 14:26:23ID:???いや簡単だと思うよ
ID指定しなければいいだけ。普通にclass=""でCSSクラスを適用すればスタイルシートが適用される
0172nobodyさん
2009/05/03(日) 22:40:49ID:???吐き出し方にクセはあるとしても結局はただのHTMLとJavaScript・CSSで組み合わさったページ作るだけじゃないか
0173nobodyさん
2009/05/04(月) 13:12:06ID:???0174nobodyさん
2009/05/04(月) 15:41:59ID:???その吐き出し方が気持ち悪いと思う人も多い
0175nobodyさん
2009/05/04(月) 16:24:55ID:???中身はただとResponse.Write(html)なのが理解できるのにな
0176nobodyさん
2009/05/04(月) 16:28:46ID:???けれどマスタページ構成なんかで各ASP.NetコントロールのIDなんかをFindControlして
ClientIDプロパティでひっぱってこないとJavaScriptで使えるIDを取得できない。
なのでコードビハインド上でJavaScriptの文字列を動的に出力する形にしてるんですけど
もっと賢いやり方ありませんか?
そもそもaspxにJavaScript書くのはデザイナさんがいやがる?
0177nobodyさん
2009/05/04(月) 16:38:46ID:???具体的に何がしたいの?
イベント発生元のコントロールと、イベントトリガーと、
何のコントロールのどのプロパティを操作したいのかが知りたい
0178176
2009/05/04(月) 17:37:01ID:???たとえば1~10の数値が選択できるDropDownList(ASPコントロール)が3つあって、
それぞれに選択された数値の合計が10以内かどうかを、ユーザ側環境でチェックするJavaScriptです。
チェックトリガはDropDownListのonChangeです。
このとき、DropDownListコントロールのIDはASP.NET側が生成してしまうため、
aspxファイルにJavaScriptを書く際のIDをどのように持ってくるのかなと思いまして。。
aspxにJavaScript置いて、コントロールのIDは<%= %>で参照するのが普通ですか?
コントロールが3つ程度ならいいのですが、20個、30個を想定した場合はどうなんでしょう?
0179nobodyさん
2009/05/04(月) 19:31:57ID:???DropDownListのOnChangeで、合計値を出すってことかな?
そしたら、functionで、それぞれがOnChangeする度に足したり引いたりするスクリプトを書いて、
自分自身をfunction(this)とでもして渡せばいいんじゃない?
別に自分自身のID知らなくても計算可能だと思うが
0180nobodyさん
2009/05/04(月) 20:14:47ID:???<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>
0181nobodyさん
2009/05/04(月) 20:15:40ID:???<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>
0182nobodyさん
2009/05/04(月) 20:17:00ID:???protorypeかjqueryあたりのハッシュテーブル使えばもっと楽にできるかもしれん
0183nobodyさん
2009/05/04(月) 20:29:28ID:???実際に動作しているときに出力されるIDが違う、ってことなんだよな
CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある
で、解決方法とすれば、実行時にスクリプト書きかえるか
なるべくID指定しなくて済むようにスクリプト組むぐらいしかないのかと
ClientIDを決定するロジックを自分で決められればいいと思うんだが
そんなことできないかな?
0184176
2009/05/04(月) 21:07:27ID:???ありがとうございます。ASPで云々ではなくJavaScript側で対応ですか。
参考になります
>>183
CSSもIDとclassで書式が違うので問題になったりしますね。
「なんでIDで指定できないの?」みたいな
ExpressionWebってこの辺を解決してくれたりするんですかね?
0185nobodyさん
2009/05/04(月) 21:32:36ID:???おそらく無理
>子コントロールをページにレンダリングするコントロールもあります。
>このような親コントロールは名前付けコンテナであり、INamingContainer を実装します。
>名前付けコンテナを含むページをブラウザに表示すると、
>名前付けコンテナの子コントロールの name 属性と id 属性に一意の ID が指定されていることをページ ソースで確認できます。
>ただし、ブラウザで表示される ID を直接参照することはお勧めしません。
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
>代わりに、子コントロールの ClientID プロパティの値を取得し、
>この値を使用して子コントロールを参照します。
>たとえば、ページ内に動的にクライアント スクリプトを作成する場合があります。
>クライアント スクリプトが子コントロールを参照する場合、
>子コントロールの ClientID プロパティを取得して動的なスクリプトに組み込みます。
http://msdn.microsoft.com/ja-jp/library/3hc29e2a(VS.80).aspx
0186nobodyさん
2009/05/04(月) 23:41:14ID:???>CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある
それで、JQueryが出てきたんでは?
どこまで、使えるのか、まだ試してないが。
0187nobodyさん
2009/05/04(月) 23:49:24ID:???そうだjquery勉強しようと思ってたんだった
どんどん新しいテクノロジが出てきておいつかないよね
asp.net勉強して、C#でジェネリクスとかでてきて勉強して、
そう思ったらajaxでてきて、SQL/CLRもやんなきゃってなって、
LinqToEntityキタ━━━━(゚∀゚)━━━━!!、ラムダ式がきたっちゃになって、
今度はリッチクライアントでsilverlightですか?(´Д⊂グスン いまここ
0188nobodyさん
2009/05/04(月) 23:53:52ID:???は良い本だった。
0189nobodyさん
2009/05/05(火) 00:01:46ID:???asp.net ajaxはポトペタだしすごい便利なんだよな
0190nobodyさん
2009/05/05(火) 00:47:31ID:???JQuery詳しく知らないが、普通の一般的なスクリプトのライブラリじゃないの?
JQuery使うとIDに依存しない実装できるってんなら話は別だが
今問題にしてるのは、クライアントに出力されるIDをどうするか、って話で
サーバ側の制御の問題なんだが
0191nobodyさん
2009/05/05(火) 12:09:59ID:???いま見てみたんだが、だいぶいろんなことが可能そう
MSDNによれば、
>他のコントロール内でレンダリングされたコントロールの参照
>子コントロールをページにレンダリングするコントロールには、
>GridView、DetailsView、FormView、DataList、Repeater の
>各コントロールなどのデータ リスト コントロール、ユーザー コントロール、
>および Web パーツ コントロールが含まれます。
これらは行が動的に生成されるので、
操作した行にあるコントロールを操作するとか、
同じ列の同じコントロールを全部参照するとかは行うけど
ある特定行(ID)をピンポイントで操作するというのはあまりないと思うんだが、
そうすると
・$(".className") 特定のクラスを持つタグにアクセスする
・$(tagName, base) 要素を検索する
・$("tagName > tagName") 特定の階層条件を満たすタグにアクセスする
でほぼクリアできそうだ。
0192nobodyさん
2009/05/05(火) 14:03:29ID:???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>
0193nobodyさん
2009/05/05(火) 14:04:24ID:???<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();
0194nobodyさん
2009/05/05(火) 14:08:38ID:???今回はContainer.CliendIDで行ごとに一意の名前を付けて、
そこから目的とするobjectを取得してみた
列の集計は集計するobjectに同じclass名を設定すれば
配列で取得できるのでそこから合計値を求めることができる
クライアント側だけで何かをしようと思うのなら割と便利かもしれない
0195nobodyさん
2009/05/05(火) 14:38:08ID:???同じクラスの要素や、同じタグの要素をID使わないでどうやって識別するんだ?
繰り返し系のコントロールはまあ仕方ないにしても
マスターページやUpdatePanelでもID変わるのがなぁ
0196nobodyさん
2009/05/05(火) 14:43:33ID:???>>192-194で試してるように、極端な話、一意の名前を持ったclassのdivで囲めば直接アクセスできる
0197nobodyさん
2009/05/05(火) 14:59:57ID:???細かい突っ込みだがな、
>今回はContainer.CliendIDで行ごとに一意の名前を付けて、
正確には、システムが自動的に生成した一意の名前を指定して、だな
システムが生成したIDを実行時バインドでスクリプト中に埋め込んでるんで、
これは実行時にスクリプト書き換えてる
で、このID生成ロジックだが、>>185が書いてある通り
>子コントロールに対して一意の ID を生成する式は変更されることがあります。
だから、それなら自分で実装できないかと思ったんだよ
これができれば、マスターページ使うページはIDは
そのまま出力させる、ってことが可能じゃないかと思ったんだ
いま1.1でマスターページ使ってないシステムあるんだが、試しに
マスターページつかって2.0(3.5)に移行してみたら、クライアントスクリプト周りが全滅したんでなw
0198nobodyさん
2009/05/05(火) 15:16:49ID:???いや、だから>>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の代わりに実行時バインドしてあげればいい。
0199nobodyさん
2009/05/05(火) 16:03:29ID:???実行時バインドで動的に書き換えるならどうとでもなるだろ
そもそもの問題はな、ASP.NETのコントロール使うと
自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
これはデータバインドするような繰り返し系のコントロールに限らないんだ
で、このルールが制御できない
ルール決め打ちでも実用上問題ないかもしれないが、自分でルール決めれたら
実行時バインドに頼らなくても(クライアントスクリプトだけで)ID生成できるだろ
サーバコントロールじゃないhtml要素に実行時にID振るなら、自分で制御できるかもしれんな
webコントロールじゃなくてhtmlコントロールだと動作変わるのか?
あとで実験してみるが、たとえばdivに(実行時バインドで)ctrl1,2,3...ってID振るようにしても、
runat="server"つけたらID変わると思うんだ
0200nobodyさん
2009/05/05(火) 16:57:12ID:???サーバコントロールのIDにバインド式は書けない模様
0201nobodyさん
2009/05/05(火) 22:49:02ID:???念のため言っとくが、アプリケーションプールのリサイクルとは別に
アプリケーション自体の再起動(アプリケーションドメインの再起動)もあるぞ。
まあありがちなのは、binフォルダにログ書くとかあほなことやってるパターンだな。
0202nobodyさん
2009/05/06(水) 03:19:58ID:???>実行時バインドで動的に書き換えるならどうとでもなるだろ
IDは書き換えられないでしょ
>マスターページやUpdatePanelでもID変わるのがなぁ
こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
コントロール配置してもIDは変化しないよ(Repeater等は除く)?
>自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
まったくソースをみてくれてないんだなぁ。
誰もIDの話なんかしていないんだけど。
>そもそもrunat="server"つけると、解析エラーになったサーバコントロールのIDにバインド式は書けない模様
だからID名を実行時にバインドしろなんて言っていないし、
>>192-194でもそんなことしてないんだが。
なんで>>192-194のソースを見て何をしているか理解しようとしてくれないのか理解に苦しむ。
0203nobodyさん
2009/05/06(水) 06:54:06ID:???>IDは書き換えられないでしょ
サーバコントロールじゃないhtml要素なら書き換えられる
>こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
>コントロール配置してもIDは変化しないよ(Repeater等は除く)?
これ、サーバコントロールでも?
後日検証してみる
>まったくソースをみてくれてないんだなぁ。
>誰もIDの話なんかしていないんだけど。
>>176,183 あたりの流れから話してるんだと思ったが、そうじゃなかったのか
じゃあお前に絡んだ俺が悪かった
>だからID名を実行時にバインドしろなんて言っていないし、
>>192-194でもそんなことしてないんだが。
>>193の
<div id = "<%# Container.ClientID %>">
は、IDを実行時にバインドしてるのじゃないのかね?
まあ、IDがどうこうを主眼にしてないなら、>>192-194について
これ以上俺が言いたいことはない
話がかみ合わないのも当然で、あやまっておく
0204nobodyさん
2009/05/06(水) 09:13:30ID:???>>201
ご返答ありがとうございます。
リスタートの条件はこれくらいかな。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28589&forum=7&start=8
仮想ディレクトリ下のファイル・ディレクトリをいじってるので、
これが怪しい気がしてきた。
aspx等のみ対象だったら無関係だけど。
ttp://support.microsoft.com/default.aspx?scid=kb%3Bja%3B319947
なんにせよリスタートしているか確認して出直してきます。
0205nobodyさん
2009/05/06(水) 10:44:48ID:???どういじってる?
例えばフォルダ作ったりしたら強制再起動だった気がするぞ、詳細は覚えてないが。
0206nobodyさん
2009/05/06(水) 10:49:18ID:???App_Data配下のみだと思っておいた方がいい。
0207nobodyさん
2009/05/06(水) 11:16:35ID:???0209BASP21でメール送信の際 503エラーが起こっています。1
2009/05/06(水) 13:07:40ID: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エラーは出るものの、メールは送信できています。
逆に、メールが全く送信できないページがあり、そこの対処で四苦八苦しております。
0210BASP21でメール送信の際 503エラーが起こっています。2
2009/05/06(水) 13:14:29ID:rRUTbrryサーバ管理者に問い合わせたところ、
> > 要求情報:
> > 要求 URL: http://www.xxxxxx.co.jp/WebResource.axd?d=2dXuOoZJYqjHKODUjwMZpPRcN5cMzka2nYnKY2l5s1&t=6337110551241250
> > 要求パス: /WebResource.axd
> > イベント コード: 3005
> > イベント メッセージ: An unhandled exception has occurred.
> > 例外情報:
> > 例外の種類: CryptographicException
> > 例外メッセージ: パディングは無効なので、削除できません。
との返答が帰ってきましたが、
サーバに /WebResource.axd というファイルは無く、
この返答がよく判っていない状況です。
ご指導いただければ幸いです。
0211nobodyさん
2009/05/06(水) 14:39:29ID:???まず、ASP.NETなのか旧aspなのか?
0212BASP21でメール送信の際 503エラーが起こっています。
2009/05/06(水) 16:30:05ID: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">
0213nobodyさん
2009/05/06(水) 16:53:20ID:???.aspxのなかでServer.CreateObject("basp21") やってるのか?
0214BASP21でメール送信の際 503エラーが起こっています。
2009/05/06(水) 17:37:24ID:rRUTbrrySet ObjBasp = Server.CreateObject("basp21")
自体は、単体のdefault.aspで行っております。
0215nobodyさん
2009/05/06(水) 19:22:43ID:???いやだからだな・・・
サーバコントロールはRepeaterなどで配置するとIDが変わる
↓
jQueryを使えばいいじゃない
↓
jQuery使ったことないけどID直接指定(ID変わるから)できないから無意味では?
↓
jQueryでサーバコントロールに指定したclass名で直接的にオブジェクト取得できるし
jQueryで<div id=''></div>で囲めばid名で直接的にオブジェクト取得できるよ
(class名は変わらないし、<div>のタグはサーバコントロールではないのでID変わらないから)
という流れで話しているのに、
>>197 >だから、それなら自分で実装できないかと思ったんだよ→だから代替方法を説明してるんですが・・
>>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ→サーバコントロールはできないです
>>203 >は、IDを実行時にバインドしてるのじゃないのかね?→サーバコントロールできないからIDかわらんdivで代替してるんです
と、かみ合ってないのは、あなたとほうだと思う
0216nobodyさん
2009/05/06(水) 19:26:54ID:???Repeaterコントロール内に設置された、
ASP.NETによって長いIDが勝手に付けられてしまうコントロールでも
オブジェクトを取得できるということを示していることがわかると思ううんだが、
なんで試してくれないの?
MasterPageでも同様の手法で、長いIDに変わってしまうコントロールを
取得できるから、わりと便利だと思うんだが。
0217nobodyさん
2009/05/06(水) 19:42:52ID:???http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140640416076
0219nobodyさん
2009/05/06(水) 21:43:45ID:???0221nobodyさん
2009/05/07(木) 00:48:26ID:???ASP.NET + jQueryかASP.NET AJAXオンリーにするかで分けた方がいいと思う
0222nobodyさん
2009/05/07(木) 03:13:36ID:???Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は
.aspxじゃなくて.aspなのか?
まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
0223BASP21でメール送信の際 503エラーが起こっています。
2009/05/07(木) 11:20:52ID:eAkk+1Gw確認したところ、ASP.NETでした。
>>222 様
Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は asp です。
>まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
私も、今はその線が強いと感じて現在テスト中です。
今まで、問題がありませんでしたので、なぜ急に・・・と思っているのですが。
しかもメール自体は送信されているので・・・
サポートからの/WebResource.axd が問題という所でASP系資料ひっくり返したり、
孤軍奮闘でしたので、お返事大変心強いです。感謝致します。
0224nobodyさん
2009/05/07(木) 12:21:41ID:???マルチポストしてんじゃねーよ 失礼だろ
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140640416076
0225BASP21でメール送信の際 503エラーが起こっています。
2009/05/07(木) 12:38:46ID:eAkk+1Gw失礼がありましたこと、お詫び申し上げます。
0226nobodyさん
2009/05/07(木) 21:14:30ID:???だが問題のページはaspだという。
だが確認してみればASP.NETだという。
0227BASP21でメール送信の際 503エラーが起こっています。
2009/05/07(木) 23:08:17ID:o/J6ITqfサポートの続報では、
認証は必要無いそうです。
メールは送れてるので、
default.asp内のObjBasp.SendMail 自体は動いていて、
何か他の部分でしくじってて、それが
ObjBasp.SendMailの戻り値503と/WebResource.axdのエラーとしてでてるのだろうと。
しかし、ObjBasp.SendMailの戻り値と/WebResource.axdの関連性がイマイチわかりません。
メールが送れてるにも関わらず、503の戻り値があり、
そのエラーのヒントは /WebResource.axd だということなのですが・・・
0228nobodyさん
2009/05/07(木) 23:53:45ID:???aspならWebResource.axdは直接関係ないよ
ObjBasp.SendMailの戻り値503 って何をどうやって何を確認してるんだ
0229nobodyさん
2009/05/08(金) 00:08:57ID:???誰も教えないだろこんな状況じゃ
本当に失礼だと思うならこっちでも詫びいれてるはずだよな?
http://www.kotaete-net.net/Default.aspx?pgid=14&qid=140640416076
0230nobodyさん
2009/05/08(金) 00:58:30ID:???何となくわかってるけど解決してないとかそういうもんじゃねぇのかw
調べる時間を得るために
0231nobodyさん
2009/05/08(金) 01:46:47ID:???aspxのときは問題なくいったんだが、ascxにした途端、宣言したlabelはnullがなんとかとかいって、
値がうまく共有?出来ない
どなたが打開のヒント頂けませんか?
0232nobodyさん
2009/05/08(金) 01:55:36ID:???0233nobodyさん
2009/05/08(金) 12:01:02ID:???UserControl1.Findcontrol("Label1").text = "hage"
//キャスト省略
0234nobodyさん
2009/05/08(金) 18:05:34ID:???実際にはLabelオブジェクトをプロパティで公開するか
Label.Textを公開してあげればいいんじゃないかと思われる
0235231
2009/05/09(土) 00:26:29ID:???>>232-234
俺の勘違いでイベント発生してないだけでした
本当にバカでした
0236nobodyさん
2009/05/09(土) 09:51:49ID:???0237nobodyさん
2009/05/09(土) 13:10:10ID:???0238nobodyさん
2009/05/09(土) 23:37:56ID:???いままでprototypeだったけどjquery結構便利だな
なんか和んだ( ´ー`)フゥー...
VS2008SP1からだったか、jqueryは標準サポートだしな
0240nobodyさん
2009/05/12(火) 00:01:12ID:???IntelliSenseは無くてもいいから
0241163
2009/05/12(火) 01:28:31ID:???以下のイベントログが出力されており、
AppPoolが再起動している為、
セッション情報が消えてるぽいです。
クラッシュダンプで調べるしかないでしょうか?
他に調査方法があればご教授お願い致します。
・イベントログ
アプリケーション プール 'xxx' を提供しているプロセスは、
World Wide Web 発行サービスで致命的な通信エラーを検出しました。
イベントID 1011
0243nobodyさん
2009/05/12(火) 05:14:26ID:U71Iyk1VPDFは表形式で、グリッドの高さは可変で、行の途中にページの境目が来る
ようならその行の前に改ページしなくてはなりません。
サーバー側の処理でPDFファイル化したいです。
よろしくお願いします。
0244nobodyさん
2009/05/12(火) 06:58:22ID:???つまり、FileSystemObjectでテキストファイルを生成して、
後はPDFの仕様通り文字列を吐き出せばいいだけだよ。簡単でしょ。
マジレスすると、無理だから別途そういうパッケージソフトを買う。
ビジネスソフト板で帳票作成ソフトというと、まぁ数は限られるから調べてみるといい。
本質的な解決ではないけど、session維持したいなら
stateserverモードを使うとかどうよ?
0246nobodyさん
2009/05/12(火) 10:47:32ID:???ASP.NETならActiveReport一押しなんだけど
0247243
2009/05/12(火) 11:35:40ID:U71Iyk1VActiveReportって定型のフォーマットしかできないイメージなんですが、
グリッドの高さ変えたりページはみだす前に改行したりできますか?
0249nobodyさん
2009/05/12(火) 12:03:03ID:???CanGrowとかCanShrinkとか
まぁ・・・簡単な動的〜FORMATイベントとか駆使して複雑な動的ってのもできるっちゃぁ出来ると思うけど
たいがいの案件はこなせてきた
一回体験ばん入れて使ってみればどうかな?
0250249
2009/05/12(火) 12:03:47ID:???疲れてんのかな・・・
0251nobodyさん
2009/05/12(火) 13:08:49ID:???>グリッドの高さ変えたりページはみだす前に改行したりできますか?
設計が悪いだけじゃない?
改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕だと思うけど
おおよその要求には応えてくれたけど、できないこともあるかもしれない
例えば1行に記述できず2行に伸長してくれたとき、
それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
もしくはそのまま印刷してくれるを選択できるとか、フッターの表示の関係とか。
グリッドの高さについては、サンプルのCreating and Modifying Report Layouts at Run Time
にあるように実行時調整してしまえば、可能と思われる(英語版ですまん)
>The format event allows the properties of report sections and controls
>to be modified including height, visibility, and other visual properties.
//フォーマットイベントでは、レポートセクションやコントロールの高さや表示/非表示などを含む
//表示に関するプロパティを変更することができる
0252nobodyさん
2009/05/12(火) 13:13:33ID:???すまん上の「できない例」は想像の話。
グループヘッダーとか、レポートのフッターの改行とか伸長とか、改ページごとに表示するとかは
帳票によってクセがあったり得手不得手があるもんなので、試してみるしかないね。
0253nobodyさん
2009/05/12(火) 13:26:34ID:???ActiveReportsならASP.NETのも基本的に変わらないけど
>改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕
CanGrowプロパティだったかな? で伸縮させるように出来る
>それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
>もしくはそのまま印刷してくれるを選択できるとか
プロパティいじるだけでそうなるはず。
KeepTogetherかなんか忘れたけど
高さ操作は処理中にしようと思うと基本的にFormatイベントでのみしか推奨されていないけどいける
中途半端な知識なんで勘違い多いかも知れんが
0254nobodyさん
2009/05/13(水) 10:29:56ID:???ページ内のValidationSummaryがErrorMessageを拾ってくれない。
isValidやErrorMessageは正しくセットされていることは確認した。
カスタムコントロールのは拾ってくれないのかな?
0255nobodyさん
2009/05/13(水) 11:41:36ID:???それともユーザコントロール?
0256nobodyさん
2009/05/13(水) 13:01:18ID:???検証失敗時にTextが表示されるし、
ValidationGroupも検知して検証してくれている。
ただ、なぜかValidationSummaryに反映されない。
もちろんPage.IsValidもfalseになってる。
0257nobodyさん
2009/05/13(水) 14:31:56ID:???単にメンバに持ってるValidatorCollentionをsingletonで返してるだけなんだな
どうやってValidatorCollentionにValidator(BaseValidator)をaddしてるのかよくわからん
ValidatorCollentionの中身も単なるIEnumerableを実装したリストクラスに見えるし
0258sage
2009/05/13(水) 15:35:29ID:???今更ながらIIS+ASP.NET+SQLiteでゴニョゴニョしてみたけど、手軽で良いわこれ。
要IIS(monoっつー手もあるけど保留)な点さえクリア出来るなら、ちょっとしたページ作成なら
これでいいや。
0259nobodyさん
2009/05/13(水) 15:38:24ID:???まあ時間取れるまでWinサーバ使うか・・・
0260nobodyさん
2009/05/13(水) 19:23:50ID:EB+s12M/トップページにある「発言ボックス」に入力した文字列を、表示ページにて表示したいのですが
テキストボックスを参照できなくて困っています。
マスターテンプレート(Template.master)
┗トップページ (Default.aspx)
┗ユーザコントロール(Hatsugen.ascx ID=hatsu)
・テキストボックス コントロール(ID=moshi)
・ボタン コントロール(botan)
マスターテンプレート(Template.master)
┗表示ページ (showhatsugen.aspx)
という2つのページ(階層)があるのですが、トップページ側のボタンコントロールで
PostBackUrl="showhatsugen.aspx" としています。
showhatsugen.aspx側で、@ITの記事を参考にテキストボックス(moshi)を参照しているのですが
nullが返ってきてしまいます。
■試したこと
�@@ITの記事のまんま試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("moshi");
�Aユーザコントロールも参照しないとだめかもと試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("hatsu").FindControl("moshi");
�Bテンプレートもいれないとだめかもと思って試してみた。
TextBox a = (TextBox)Page.PreviousPage.Master.FindControl("hatsu").FindControl("moshi");
上記のような階層の場合、どのように値を参照できるか教えてください。
■参考にした@ITの記事
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/406asppostback1/asppostback1.html
0261nobodyさん
2009/05/13(水) 19:37:56ID:EB+s12M/0262nobodyさん
2009/05/13(水) 19:45:55ID:???あえてそれをやってるんだよね?
0263nobodyさん
2009/05/13(水) 20:05:04ID:???0264nobodyさん
2009/05/13(水) 20:21:45ID:???Response.Redirectよりよく思えるんだよな。
いやまぁ実際メリットもあるけど。
0265nobodyさん
2009/05/13(水) 22:50:11ID:???0266nobodyさん
2009/05/13(水) 23:01:05ID:???ASP.NETの各種仕組みと相性が悪い。
Server.Transferはいいんだけど。URLが紛らわしくなるため敬遠されることが多い。
0267nobodyさん
2009/05/13(水) 23:49:01ID:???異なるページに遷移するときはsessionだのcookieだの使用したほうがわかりやすいよね
asp.netの場合は1ページが1クラスだから、
クラス内の処理は、なるべくクラス内に責任もって記述してあげるのが
オブジェクト指向の観点からもわかりやすい気がする
各ページのクラスにCookieやSessionを扱う、
ICookieや、ISessionみたいなインターフェースを実装して、
Serializableなデータを保持するクラスを、
ページ間でやりとりできるようにしたら面白いのになと思ったり。
0268nobodyさん
2009/05/14(木) 00:02:25ID:???うちはページ継承してベースページを作成して
各機能ページはそれを継承して処理ってる
セッション管理とかログインしているいないとかのチェックはベースページ側でやってたり
インターフェイスもいいけどなんか使いどころが難しくってさ・・・
各ページで実装もセにゃいかんし
レベルが低いだけだとは思うが
0269nobodyさん
2009/05/14(木) 00:15:25ID:???0270sage
2009/05/14(木) 11:53:07ID:W6V8lEeJ現在vs2008、.NET FrameWork3.5にてASPのシステムを作成しています。
セッションが切れた場合の処理としてテストしているのですが
global.asaxでsession_startでセッションが切れた場合にエラー画面へ
リダイレクトする処理を入れているのですが
そこを通った後またsession_startに来てしまいリダイレクトしてくれません。
ログをみてもその関数が終わったらすぐにその関数というようになっています。
原因を知っている方お願いいたします。
If Me.Request.RawUrl.IndexOf("XXX.aspx") < 0 Then
If Session("UserId") = "" Then
Response.Redirect("http://XXXXX/ERRGAMEN.aspx")
End If
End If
0271nobodyさん
2009/05/14(木) 12:33:07ID:???エラーページにResponse.Redirectで遷移すると
設定したSessionが消えてしまうことがあるらしい
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10653&forum=7
ログやそれに似た用途ならglobal.asaxでもいいけど
認証ならフォルダごとにWeb.configでやったほうがいいかも
0273nobodyさん
2009/05/14(木) 15:08:04ID:???0274nobodyさん
2009/05/14(木) 15:18:31ID:???・日付が変更される毎にカウンターCcountを1増加させて表示(Label1)
・選択されたカレンダーの日付を表示(Label2)
・PageLoadされる毎にカウンターPcountを1増加させて表示(Label3)
させたい。
Partial Class _Default Inherits System.Web.UI.Page
Public Shared Pcount As Integer
Private Ccount As Integer
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Calendar1.SelectionChanged
Ccount = Ccount + 1
Label1.Text = Ccount.ToString 'Calendarの日付が変更された回数を表示
'カレンダーの日付を選択したら、カレンダーの値を表示する
Label2.Text = Calendar1.SelectedDate.ToShortDateString
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Pcount = Pcount + 1
Label3.Text = Pcount.ToString 'PageLoadされた回数を表示
End Sub
End Class
カウンターの定義で、上記のように Public Shared ではなく Private にすると
数値が初回+1しただけで、それ以上増分されません。
何がいけないのでしょうか?
0275nobodyさん
2009/05/14(木) 15:38:57ID:???public shared PcountはASP.NET全体で利用するアプリケーション変数(グローバル変数)的なものだったと思う
privateにすると、そのPageのメンバ変数になるので、ポストバックすると新しいPageのインスタンスが生成されるから、
Pcountも新しいインスタンスの異なるメンバ変数扱いになってポストバック前のデータを保持しない
そう考えるとpublic sharedは便利と思うかもしれないけど、
複数の人が同時にそのページを利用すると、使用した人の数だけPcount++されてしまって
思ったような動作はしないと思うよ
Aさんが日付選択→Pcount → 1
Bさんが日付選択→Pcount → 2
Aさんが日付選択→Pcount → 3
Aさん2回目の使用でPcount==2のはずなのに途中でBさん使ったのでなぜかPcount==3
なんでPcountの値をセッションやクッキー、ViewStateに保存して
Page_Loadで復元するような処理を書く必要がある
この場合同じページへのPostBackだしセキュリティにも大きな影響を与えなさそうなので、
ViewStateがいいと思う
0276nobodyさん
2009/05/14(木) 16:02:31ID:???>privateにすると、そのPageのメンバ変数になるので、
>ポストバックすると新しいPageのインスタンスが生成されるから、
>Pcountも新しいインスタンスの異なるメンバ変数扱いになって
>ポストバック前のデータを保持しない
ということですね、理解しました。
データの保持の違いとか、処理タイミングとか、実行順とかまだ整理できて無くて
そのために簡単なサンプルフォームを作って、カウンター表示を仕込んで試しているのですが
条件が変わると自分の狙った内容と実行結果が違ってたりして、・・・頑張ります!
0277nobodyさん
2009/05/15(金) 19:06:29ID:???がんばれ
0278nobodyさん
2009/05/15(金) 21:06:17ID:???同期しなくなるとか昔はまったな。
挙句、不正な操作扱いされたりとか。
0279nobodyさん
2009/05/15(金) 21:07:23ID:???Sharedかそうじゃないかなんだが、大丈夫か
0280nobodyさん
2009/05/16(土) 00:33:16ID:???言語の優劣を語る気はないがなんとなく気になったC#使い。
0281nobodyさん
2009/05/16(土) 02:18:45ID:???業務系もVB6の流れを汲むところは、今でもVB.NETが多いし
新しい言語に切り替えるって難しいよね
新しいテクノロジに理解があるところばかりじゃないし
過去の資産に縛られたりして
0282nobodyさん
2009/05/16(土) 03:21:32ID:???VBの頃はネットが普及したせいで、ばかみたいなコードや習慣が広がりすぎた。
でその悪しき習慣をASP.NETとかにまでそのまま持ってくるもんだからとんでもないことに。
0284nobodyさん
2009/05/16(土) 04:40:23ID:???1.Global.asaxはシングルトンか?
2.Global.asaxにインスタンス変数を定義して、HttpContextのようにリクエストに関する情報を保持するのは問題ないか?
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行されるか?
4.ViewStateUserKeyはCSRF対策に利用できるか?
5.Global.asaxにインスタンス変数を定義して、グローバル変数として使えるか?
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは基本的に再利用されるものと期待できるか?
7.グローバル変数が必要な時Applicationオブジェクトを定義するのは望ましい方法か?
8.サーバを分散していない場合、ApplicationオブジェクトはそのWebアプリケーション内で完全に一つとみなしてよいか?
9.ViewStateは基本的に改ざん防止策がほどこさえているので、ViewStateの値は基本的に信用してよいか?
10.Webガーデンを使用していないのに、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得るか?
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全か?
12.フォーム認証でログアウトすると、その認証チケットでは二度とアクセスできなくなるか?
13.SQLインジェクションは、Webアプリケーション特有の脆弱性か?
0285284
2009/05/16(土) 12:15:07ID:???0286nobodyさん
2009/05/16(土) 12:23:16ID:???0288284
2009/05/16(土) 12:38:15ID:???0289nobodyさん
2009/05/16(土) 12:44:04ID:???0290nobodyさん
2009/05/16(土) 12:46:21ID:???俺がさっきちょっと考えてみただけの。
テストや宿題じゃなくて(っていうか中身見りゃわかるだろうけど、そういうレベルの問題じゃない)
正解は○がって数書こうと思ったけど、結構偏ってるな、疑うなら書くが。
問題のニュアンスはわりと詳しいつもりやつが理解してないことが多かったもの。
その前に内容がマニアックに偏ってるけどな。
0291nobodyさん
2009/05/16(土) 12:58:07ID:???1× 2× 3? 4○ 5× 6? 7× 8○ 9○ 10?
11○ 12? 13×
?のとこはワカンネ
あと設定次第だったり、環境次第だったりするところがあるよね
ViewStateUserKeyが空文字の場合とか、
認証チケットは暗号化されてるけど認証に至るまでの経緯でhttpsでないと安全でない場合とか
0292nobodyさん
2009/05/16(土) 13:04:00ID:???0293nobodyさん
2009/05/16(土) 13:08:00ID:???環境しだいだったりするのは確かにあるが、
環境を特殊にどうこうした場合とかではなくて
一般的な標準的な状態と思ってもらっていい。
ViewStateUserKeyの場合はもちろん文字列をうまく設定すれば普通に利用できるか?という話だし、
認証チケットの扱いも特殊な状況は想定していない。
単にHTTPSじゃない経路で認証チケットを使うのは安全か?(認証チケット自体は暗号化されているが)。
ということ
Applicationオブジェクトは、そこに保存した変数というか、中身のことと思ってくれていいよ。
書き方悪かったな、いわゆるApplication変数はサーバ内で完全に一つと思っていいか?ということ。
0294nobodyさん
2009/05/16(土) 15:53:09ID:???0295nobodyさん
2009/05/16(土) 16:34:45ID:???それ以外は×だよ
0296nobodyさん
2009/05/17(日) 06:17:41ID:???問題文もう1回精査してから回答とともにアップしなおしてくれ
0297nobodyさん
2009/05/17(日) 09:24:47ID:???1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義するば、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、はCSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
1.×
2.○
3.×
4.○
5.×
6.×
7.×
8.×
9.○
10.○
11.×
12.×
13.×
0299nobodyさん
2009/05/17(日) 12:05:47ID:???0300nobodyさん
2009/05/17(日) 12:14:56ID:???疑問のある番号あるなら疑問点を書いてね。
0301nobodyさん
2009/05/17(日) 12:40:24ID:???インスタンス変数ってのは、スタティックじゃない変数ということかな?
Global.asaxにPublicな変数定義しとけば、グローバルに使えると思うんだが
0302nobodyさん
2009/05/17(日) 13:12:04ID:???0303nobodyさん
2009/05/17(日) 13:16:28ID:???ここでは、アプリケーション全体で共有できるグローバル変数という意味。
まあだいたい一般的にこういう意味になるとは思うが。
0304nobodyさん
2009/05/17(日) 16:45:45ID:???1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義すると、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、CSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、アプリケーション全体で共有できるグローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
0305nobodyさん
2009/05/17(日) 16:49:05ID:???1.×Global.asaxは各リクエストに一つのインスタンスが割り当てられる(リクエスト完了後はプールされて再利用)
2.○1.より、リクエストに関する情報をインスタンス変数に保持することができる
3.×セッション準備時の同期化などの仕組みにより、スレッドが切り替わることがある
4.○もちろん使える
5.×1.より、インスタンス変数はアプリケーション全体で共有できない
6.×実はIsReusableは無視されている(常に再利用されない、まあこれは今の実装の話であってどうでもいい話ではある)
7.×そんなわけはない(むしろApplication変数はあまりお薦めではない、これにはいろいろ理由があるが)
8.×Webガーデンを使えば単一にはならない、またアプリケーションのリサイクルなどにより一時的に複数になり得る
9.○検証が有効であれば、少なくとも中身を改ざんされることはない(キーが漏れてるとかそういう状況はない前提)
10.○ワーカプロセスのリサイクルにより、一時的に複数同時に動作することがある
11.×盗聴されれば見事に不正アクセスできる(チケットの暗号化の意味はまた別にある)
12.×認証チケットは無効にはできない(ログアウトはクッキーを消すだけ)、とくに有効期限が長い場合これは要注意
13.×そんなわけはない
0306nobodyさん
2009/05/17(日) 20:31:50ID:???主眼をどこに置くかで結果が違いそうなこともありそうだ
それはともかく知らないことがいくつかあったので勉強になったよ
今度実験してみようっと
0307nobodyさん
2009/05/18(月) 18:33:02ID:???イベント識別するのにもViewState使ってたと思うからその分じゃね
0309nobodyさん
2009/05/19(火) 01:35:59ID:???つまり.NETのコントロール一切使わなければ出ないって事かな?
それだと.NET使う意味ねーな・・・
0310nobodyさん
2009/05/19(火) 01:54:25ID:???0311nobodyさん
2009/05/19(火) 01:55:28ID:???0312nobodyさん
2009/05/19(火) 21:35:47ID:???<asp:CheckBox id="CheckBox1" runat="server" />
がたくさんあると、viewstateがえらいことになる・・・・
なんとかしてOFFにしたいもんだ
0313nobodyさん
2009/05/19(火) 22:02:16ID:???PostBack前の状態を維持する仕組みをhiddenフィールドで
ベタに構築することを考えたら遙かにサイズは小さいと思うし、
セキュリティ的にも安心できるし、
十分に利便性はあると思うけど
それを考慮してもViewStateが嫌ならASP.NETを使わないか
旧ASPとして利用するしかないね
0314nobodyさん
2009/05/19(火) 23:02:51ID:???ばか?
0315nobodyさん
2009/05/19(火) 23:11:27ID:???0316nobodyさん
2009/05/20(水) 00:04:28ID:???使えるコントロールが限られるけど
0319nobodyさん
2009/05/20(水) 13:35:47ID:???falseにしたコントロールやページに関してはViewStateに反映されないよ
ただASP.NETとして必要なぶんが反映されてるだけ
0320nobodyさん
2009/05/20(水) 14:49:36ID:???>ASP.NET によって使用されるページには、ポストバックを検出することを目的として、
>EnableViewState が false の場合でも読み込まれる非表示のビューステート フィールドが存在する場合があります。
ちゃんとMSDNにも書いてある。つまりASP.NETの仕様。
phpでも、ページからのpostであることを示すために、
hidden fieldで<input type="hidden" name="mode" value="postback">とかして、
$mode = $_POST["mode"];で受け取ってpostbackが入っていたらpostされたと認識して
初期処理したりするけど、それをViewStateを利用して実現してる。
これすら嫌ならもはやwebアプリは向いてないから止めたほうがいいと思う。
それかすべてsessionでやる。
モバイルASP.NETはこのViewStateの仕組みを一部のコントロールを除いて
ViewStateでなくてsessionでやってるよ。
0321nobodyさん
2009/05/20(水) 15:52:47ID:???PHPとかで実装しようとすると大変だろうな
0322nobodyさん
2009/05/20(水) 16:52:27ID:???0323nobodyさん
2009/05/20(水) 17:51:12ID:???大変ではないけどめんどくさいだけ
便利なのには違いない
つうか、必要でないViewStateだけ残して切ればいいじゃん
それすら嫌とか言うなら論外だろ
何かデータを保持るためのInputとかを別の形で実装してるようなもんじゃないか
0324nobodyさん
2009/05/20(水) 18:01:54ID:???大した問題にならないから無視しろか、
サーバーコントロールは極力使わなずResponse.writeしろの、
大体この二つに分かれてる感じだな。
一時期俺も削減に躍起になってたけど、そもそもASP.NETって時点で…
と気づいてからは余りこだわらなくなったな。
0325nobodyさん
2009/05/20(水) 21:21:01ID:???0326nobodyさん
2009/05/21(木) 00:42:51ID:???ViewStateは問答無用だろ。。
0327nobodyさん
2009/05/21(木) 00:45:50ID:???0328nobodyさん
2009/05/21(木) 01:36:07ID:/8BtlCky0329nobodyさん
2009/05/21(木) 02:38:51ID:???気になるプログラマはいると思う
んで、ユーザ数が多いと、そういうコツコツが大事だったりするので、
なんでViewStateを完全に無くすことができないかを知りたいと思う好奇心は
プログラマに必要な資質だと思う
だけど、ViewStateの動作を詳しく把握してもいないのに
ViewStateの存在を制御できないから気持ち悪いとか、
こんなにViewStateがたくさん埋め込まれるのは理解できない
みたいなこと言ってるプログラマがいたら確かに使えない奴だと思う
0330nobodyさん
2009/05/21(木) 04:14:36ID:???>気になるプログラマはいると思う
普通自動でセッションに保存されるでしょ
0331nobodyさん
2009/05/21(木) 07:40:13ID:???そういうのやろうとすると邪魔じゃね?viewstate。
0332nobodyさん
2009/05/21(木) 08:20:41ID:???ViewStateに対して間違った期待をしてないか。
0333nobodyさん
2009/05/21(木) 13:12:01ID:???ポストバックの結果をブックマークしたいなんてことしなければ。
0334nobodyさん
2009/05/21(木) 14:32:49ID:???0335nobodyさん
2009/05/21(木) 14:46:42ID:???参考までにそのメリット・デメリットなどご意見いただけないでしょうか。
0336nobodyさん
2009/05/21(木) 14:59:13ID:???S2.NET合わない
0337335
2009/05/21(木) 15:29:27ID:???そうですか。
紹介している記事もちらほら見かけるし、一見便利そうだったんで
使うのが一般的なのかとおもったのですが、そうでもないんですかね。
0338nobodyさん
2009/05/21(木) 15:47:46ID:???俺は使う気はないがもちろん使えることもあるだろう。
0339nobodyさん
2009/05/21(木) 15:49:01ID:???.NETに取り入れてられればいいんだけど
標準でないものを使うのは気が引ける
といいつつJQuery使ってるけどw
0340335
2009/05/21(木) 17:29:21ID:???その片手間で.NET学習しながら次の案件を・・・とは考えているのですが、
なかなか時代の進歩に学習が追い付かなくて悩んでたんです。
ご意見ありがとうございました。参考にいたします。
0341nobodyさん
2009/05/21(木) 18:47:50ID:???ASPの片手間でASP.NETは無謀。
0342nobodyさん
2009/05/21(木) 20:31:49ID:???Googleの検索、トップページじゃなくて検索後のページで考えれば、
動作的にはポストバックでしょ(getだけど)。
その結果をブックマークしたい、って話よ。
0344nobodyさん
2009/05/21(木) 21:10:26ID:???例えばTextBoxのサーバコントロールを設置して、
「送信」ボタンをクリックすると、自動的にPOSTでポストバックされるということを
言いたいんじゃないかと想像
0345nobodyさん
2009/05/21(木) 21:38:57ID:???ViewStateからなにやらクエリパラメータになるんだね
長いViewStateだと死にそうだけど
普通にクエリパラメータを作成して、Response.Redirectして
受け取り側では、Page.Request.QueryStringでGET内容を取得して
処理すれば手間(といってもphpとかなら当たり前の作業)だけど実現できそうだ
つーか、phpでは当たり前の実装が手間に感じるほど
PostBackは便利すぎってことだよね・・
この辺をうまく実装してくれるような仕組みってASP.NETにあったっけ?
0346nobodyさん
2009/05/21(木) 21:59:07ID:???0347nobodyさん
2009/05/21(木) 22:55:04ID:???0348nobodyさん
2009/05/21(木) 23:14:05ID:???古き良きWeb開発をしたい人にはとても良い。
しかしまあ、Webアプリ開発初心者には普通のASP.NETのが簡単だろうな。
Java人なんかにはMVCはグッとくるかもな。
0349nobodyさん
2009/05/21(木) 23:17:16ID:???クエリに検索キーがついたURLの文字列をブックマーク(記録)するだけで
ポストバックとかは関係無いと思うが。。
0350nobodyさん
2009/05/23(土) 08:52:49ID:???ブラウザのアドレス欄に「検索キーがついたURLの文字列」が現れて欲しい訳だけど、
form runat="server" method="post"
内のサーバコントロールに(ユーザーが)検索キーを入力した場合、
クエリ文字列は現れてくれない(URLは変化しない)し、
method="get"
にすれば現れるけど、もれなくviewstateもついてくるから邪魔。
っていう話。
>>344でだいたい合ってる。
0351nobodyさん
2009/05/23(土) 09:36:30ID:???ってのが最初から言われてることでしょ。
0352nobodyさん
2009/05/23(土) 09:43:31ID:???何にしても便利なやり方にはトレードオフはあるわな。
ASP.NET MVCみたいの使うとか(詳しく知らんからどんな感じにできるのか分からんけど)、
こういう用途の時だけは、ポストバックされた情報をもとに
クエリやパスに直してリダイレクトして結果表示ってのが簡単かな。
>>345みたいな方法だね。
0353nobodyさん
2009/05/23(土) 13:26:19ID:???0354nobodyさん
2009/05/23(土) 13:27:16ID:???よく考えたらNameValueCollentionをメンバに持つクラスを作って、
それにAddされて内容に従って、name=value&name1=value1みたいな出力をさせて、
URL作るだけだから、そんなに面倒じゃないね
受け取り側もHttpUtility.ParseQueryStringでやれば、
URLを自動的にNameValueCollectionに入れてくれる
ひょっとしたら、もっと便利なutilityクラスがあるかもしれないけど。
0355nobodyさん
2009/05/23(土) 13:29:36ID:???検索結果を表示させる一覧ページとかじゃない?
例えば業務なら担当が自分のページだけをブックマークしておいて、すぐに表示したいとか
0356nobodyさん
2009/05/23(土) 13:46:59ID:0dm/bxqY現在、IIS上、1つのWebアプリの中に10個程フォルダ分けして運用していますが、
これら全てをチェックアウトしてくると、1ビルドに軽く10分程かかります。
したがって、毎回開発に必要な分を取捨選択して落としてきています。
以前、別の会社が作成したサイトを見せてもらった時は、
そもそもサイトはIIS上全て別Webアプリとして管理されていました。
しかし、そのためにApp_Code配下の共有ライブラリは
それぞれのサイトごとに保持するという形を取られていました。
通常、あるべき管理体系を考えると前者はあり得ないんでしょうが、
後者の冗長管理もどうなんだと、いう感じです。
0357nobodyさん
2009/05/23(土) 16:56:23ID:???そういう用途ならサーバ側に用意するのが普通では?
業務に関係無く、要は個人用にカスタマイズしたページだよな。。
検索結果だって毎回同じキーワードで検索する意味不明。
>>356
開発元(マイクロソフト)が発行している開発技術大全だかに
詳しく解説されてるよ。ASP.NETの応用編だったかな。
発行年月は古いが基本的なことが書かれていてためになる。
ViewStateなんかも巷の初心者向けには書かれてないことがあったりするからおすすめ。
0358nobodyさん
2009/05/23(土) 17:02:05ID:???いや、だからgetで指定されてると便利な場合だよ
googlemapのような緯度経度で指定してリンクを張りたいとか、
特定の商品のカテゴリ一覧だけを表示させたいとか。
一つのページ内で完結しているんでなく、
外部からのリンクを許可するような場合。
0359nobodyさん
2009/05/23(土) 17:41:00ID:???そのサーバ側の用意として、getで指定するページを作るわけだが
まあ、厳密にはポストバックされているページではないがな
0360nobodyさん
2009/05/23(土) 17:44:57ID:???運用って何を指しているんだ?
チェックアウトやビルドは通常開発段階での話だが、
開発方法をして運用っていってるのか?
あるべき管理体制ってのは、何の管理をする体制のこと?
ソースの管理か?
0361nobodyさん
2009/05/23(土) 18:55:09ID:???エスパーすると、共有のライブラリをプロジェクト(Webサイト)ごとに
管理しないといけないから面倒ってことでしょ
それでも1サイトを1プロジェクトにして参照設定して、
発行すればライブラリも発行されるからそれの何が不便なのかよくわからないけど。
同じサーバに同じDLLが複数存在することを気持ち悪いと思うのなら
感覚としては理解できるけど、逆に、そのサイトがアクセス数が増大してしまって、
個別のサーバに移植したいという需要が発生した時には、
何も考えることなくそのWebサイトだけを他に移動させればいいんで、
その点では利便性は増してると思うけど。
0362nobodyさん
2009/05/24(日) 08:23:28ID:???HttpRequest.QueryString()を使えばいいだけのような気がするのだが。
別にPostBackだけが唯一のパラメータ取得の方法じゃないし。
0363nobodyさん
2009/05/24(日) 16:17:44ID:???0364nobodyさん
2009/05/25(月) 16:11:35ID:???アクセス数が多かったり、携帯だったりだと少しでも無駄は省きたいわけだ。
無駄にステートを保存してもらわなくていいし。
なんでページで「OFF」と指定しているのに組み込まれるのか。
というと、ASP.NETつかうなだとかいうやつがでてくるだろうけど、
これはMSも設計ミスと認めてるわけで、次.NETでは完全にOFFになるようだ。
結論からいうと3.5までではあきらめろ。
0365nobodyさん
2009/05/25(月) 16:12:47ID:???0366nobodyさん
2009/05/25(月) 17:05:50ID:???改ざん無しで
0367nobodyさん
2009/05/25(月) 17:07:56ID:???0368sage
2009/05/25(月) 17:44:02ID:???表示させる際に、日付でグループ化したいんですが
--------
yyyy/mm/01
・01 xxxxxxx
・02 xxxxxxx
yyyy/mm/02
・01 yyyyyyy
・02 ccccccc
--------
みたいな感じで。
.NET2.0だと、Repeaterの入れ子で実現するしかないでしょうか?.NET3.5だとListViewで
お手軽に実現出来そうなんですが。
0369nobodyさん
2009/05/25(月) 18:06:49ID:???SQLテーブルに日付テーブルの日付をinner joinして
日付テーブルID、SEQテーブルID、日付、項目というテーブルを取得して、
日付でソートし、日付が異なるたびに実行時バインドで<tr><td>yyyy/MM/dd</td></tr>
という行を表示してやればrepeaterを入れ子にしなくてもいいんでね?
0370nobodyさん
2009/05/25(月) 18:10:14ID:???最終的にどんなHTMLにしたいか考えたら結構簡単だと思うんだけど・・・
どんな方法だって実現できると思うけど?
あれだけど、極端な話テーブル使う方法もあるだろうし
0371nobodyさん
2009/05/25(月) 20:34:29ID:???入れ子にする必要なんてないだろ
日付の部分だけ実行時バインドで、表示するかどうか判定するロジック組めばいいんじゃね
0372nobodyさん
2009/05/25(月) 22:49:35ID:???詳しく
0373nobodyさん
2009/05/26(火) 00:59:11ID:/YYr/a48ASP.NET 4.0でMVC Framework標準装備って話でしょ。
ただ、MVC採用が現行の切り捨てに直結はしないと思うが。
0374nobodyさん
2009/05/26(火) 12:50:31ID:???どう考えても置き換わるもんじゃないのに。
0375nobodyさん
2009/05/26(火) 14:00:24ID:???いままでのサーバコントロールとか一式駄目になるな
0376nobodyさん
2009/05/26(火) 14:12:00ID:???0377nobodyさん
2009/05/26(火) 20:37:00ID:???実行時バインドを多様して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の問題はやっぱり解決はできなさそうだ。
0378nobodyさん
2009/05/27(水) 10:49:08ID:???データベースのテーブル作成で、
列名'ID' を IDENTITYの指定で(Is Identity)>「はい」を選択し
・IDENTITYインクリメント=1
・IDENTITYシード=1
とした場合、
「テーブルデータの表示」を開くと、自動的に初期値ID=1が表示され、
1レコードを入力完了すると、自動的にID=1が表示される。
となるのではと思うのですが、
'ID' の欄が「セルは読み取り専用です。」と(タスクバーに)表示され手入力不可。
これはよいのですが、データがNULLのままです。
どうすれば自動的にIDが入力されるようになるのでしょうか?
0379anon
2009/05/27(水) 11:44:02ID:???まともな回答が付いてないようなので。
repeaterをネストさせるのが一番簡単だと思うよ。
DataSetとしては、日付をDistinctしたものと、テーブルをそのまま取得し
たものの2つを用意して、2つの間でリレーションを設定。本文を格納した
DataSetに対してはDataViewを設定。
これで階層構造で表示させられる。
0380nobodyさん
2009/05/27(水) 12:18:04ID:???>まともな回答が付いてないようなので。
>>369,371は無視か?
それともまともじゃないというのか?
Repeaterのネストは本人も方法として言ってる
簡単かどうかは考え方によるだろうが
データセットにリレーション張ってRepeaterネストさせるぐらいなら、
日付ブレークの判定いれる方が簡単だと思うがな
0381nobodyさん
2009/05/27(水) 12:58:36ID:???GridViewに編集ボタンを付けて実行し
編集ボタンをクリックすると、下記のエラーメッセージが出ます。
「使用されている SQL Server のバージョンでは、データ型 'date' がサポートされていません。」
スタック トレースを見ても意味が分かりません。
何処を直せば、あるいはパッチの追加インストールとか必要なのでしょうか?
0382nobodyさん
2009/05/27(水) 13:04:36ID:???0383nobodyさん
2009/05/27(水) 13:07:41ID:???設定してすぐにテーブルを開くと表示されてるのは、
全部のフィールドがNULLになってると思うけど、
これは新規に行を追加するところだから
何かしらを入力(ID以外のデータ)してenterキーを押して決定すると
新しい行がデータベースに追加され、IDが表示される
0384nobodyさん
2009/05/27(水) 13:09:52ID:???わかんないけど、日付を表示させようとすると、
そういうエラーが発生するんだよ
ソースを表示するとGridView内にタグにdbtype="date"みたいな
表示がかかれてるところがあるから、そのdateをdatetimeにすると
正常に表示される。
編集や削除を許可してるなら、その数のぶんだけあるから
複数修正すること
0386nobodyさん
2009/05/27(水) 13:40:46ID:???0387nobodyさん
2009/05/27(水) 14:08:08ID:???IME ga kowareta ze ww
tabunn kono fix program jya ne?
install shitara kekka houkoku plz
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=17185
0388nobodyさん
2009/05/27(水) 21:23:09ID:???0389nobodyさん
2009/05/28(木) 17:38:31ID:???asp.net(1.1)webサイトAがあります。
これは現在順調に動いています。
アプリケーションルートはwwwrootにあります。
ところが、このサイトを携帯サイトにも対応させようということになり
wwwroot直下にmovileというアプリケーションを登録し、元のサイトのコードをすべてコピーしました。
現在はまだここまでで、携帯にhtmlをコーディングし直しているわけではなく、PCで閲覧してテスト中です。
データベースからのデータを得る部分はwwwroot直下の別アプリケーションwevserviceを参照しています。
これはコピー元、コピー先ともに同じです。
ところが、単なるポストバックプログラムは動くようになったのですが、wevseervicceを参照している部分だけ
>>System.Net.WebException: 操作がタイムアウトしました。
エラーが出ます。web.configはすべてコピー元と同じ設定にしてあるのですが、movileアプリケーションだけが
エラーを出します。
どこかに同一サーバー内の別アプリを区別するセキュリティやタイムアウトの設定があるのでしょうか?
ヒント、誘導でもいいのでお願いします。
0390nobodyさん
2009/05/28(木) 17:53:13ID:wAV+Bwsc0391nobodyさん
2009/05/28(木) 18:43:17ID:???IISサービスマネージャ(スナップイン?)で、新たなアプリケーションを追加(仮想ディレクトリの追加?)を
追加して新しいサイトとしてやってみるのは試してみた?
どこで処理が止まってるかデバッグで確かめて、
その接続がなんでいかないかを考えたほうが早いようなきもするけど。
あとmovileじゃなくてmobileね
0392nobodyさん
2009/05/28(木) 19:08:30ID:wAV+Bwscありがとうございます。
web.configをコピーしたのには、将来的にcookieless=trueとして携帯サイトとしてクッキー対策するためと
ログイン画面への遷移を指定するためで、どちらもアプリケーションルートのweb.configのみという制約があるのです。
処理が止まっているのはwebサービスの応答待ちです。
webサービス側はまったくリクエストが届いていない感じです。
サーバー内には目立ったエラーログはありません。
0393nobodyさん
2009/05/28(木) 19:13:32ID:???web.configがなかったらどうかとか、
webサービスがなんで動作しないのか、
可能性を一つ一つ試して排除してみるしかないと思う。
asp.net 1.1 とwebサービスの特有の何かしらの症状なら、
あまり利用したことがないから想像がつかないけど。
0394nobodyさん
2009/05/28(木) 19:21:36ID:wAV+Bwscありがとうございます。
なるほど!テストしてみます!
0395nobodyさん
2009/05/28(木) 19:27:17ID:???>データベースからのデータを得る部分はwwwroot直下の別アプリケーションwevserviceを参照しています。
ああ、別アプリに登録してるのか。
それだと、webserviceが共通で利用できない可能性ってないのかな?
俺が勘違いしてるね。スマン
0396nobodyさん
2009/05/29(金) 02:19:51ID:DlIDf9OBDebug.WriteLine(Session.SessionID)
End Sub
↑のように書いてページにボタンを置いてポストバックしてみると、毎回違う値が出力される。
SessionIDってそういうものなの?
セッションIDなんて名前なんだから同一セッションの場合は同一の値が返ってくるものと思ってた。
0397nobodyさん
2009/05/29(金) 03:05:08ID:???同じだよ
クッキーが無効になってる
とか
http://support.microsoft.com/default.aspx?scid=kb;ja;316112
とか
0398nobodyさん
2009/05/29(金) 08:10:07ID:???TextBoxに「2001/6/1」と入力して、それをカレンダーに反映させるにはどうすればよいのでしょうか?
今月じゃない日付を選ぶ場合、月をクリックして前月、前月と繰り返し再表示させなくてはならず、
年月日をダイレクトで指定し、そのカレンダー上に日付に関連する情報を表示(日付を赤バックにする)し
内容を確認できるようにしたい。
最終的に日付の入力はDropDownListで入力する予定です。
0399nobodyさん
2009/05/29(金) 11:09:25ID:I+rUeGmYいえいえ、とんでもありません。
>webserviceが共通で利用できない可能性
やはりことあたりが疑わしいので、webサービスに接続しているアカウントなどを
追ってみたいと思います。
0400nobodyさん
2009/05/29(金) 14:01:33ID:???DateTime dateTime;
if (DateTime.TryParse(this.TextBox1.Text, out dateTime))
this.Calendar1.VisibleDate = dateTime;
0401nobodyさん
2009/05/29(金) 23:31:08ID:???もう解決済みかもしれんが、亀レスしておく。ASP.NET のワーカー
プロセスは以下のタイミングで再起動する。
・Web.config や Machine.config の更新
・bin 以下のコンテンツの変更(アセンブリ)
・*.aspx 等のコンテンツの変更多数
・なんか具合が悪い時(ぴゅう!)
よって、InProc モードを使っているとタイムアウトしていないのに
データが失われるという不可解な現象に悩まされることになる。
これがデフォルトの動作モードというのはもはや犯罪。いくら速くても
データがロストするんじゃね。
ということで、Session に重要なデータ保存するなら、InProc を使っては
いけない。つまり、ASP.NET 2.0 以降を使うべき。ただ StateServer などを
使う場合には Session に格納するオブジェクトに Serializable 属性が必要
になるので要注意。
0402nobodyさん
2009/05/30(土) 00:27:53ID:???原因は、>>241でして、
どうしようもない状態です。
iis 8007006dでググルと事例は
やたら出るが、対処方がみつからないです。
InProcを利用すべきでない等も
理解しているのですが
変えられない状況です。
0403nobodyさん
2009/05/30(土) 00:32:22ID:???0404nobodyさん
2009/05/30(土) 00:37:39ID:???1つのプロジェクト構造の為、
自部署のアプリのみをソースレベルで
慎重に分離して、StateServer対応の為、
シリアライズの部分を慎重に見直して、
全再テストする工数が莫大だからです。
0405nobodyさん
2009/05/30(土) 00:47:53ID:???あれから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=
0406nobodyさん
2009/05/30(土) 01:25:38ID:???iis 8007006d でぐぐると、日本語では1件しか表示されない
MSのサポート情報の機械翻訳で日本語があれだが、エラーの原因が書いてある
そこに書いてある対処方法は当然ためしたか、該当しないか確認したんだよな?
0407398
2009/05/30(土) 04:44:22ID:???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)
によって該当月のカレンダーが表示されますが、日付の選択状態が実行されません。
指定した日付を選択状態にするにはどうすればよいのでしょうか?
0408nobodyさん
2009/05/30(土) 05:15:58ID:???>指定した日付を選択状態にするにはどうすればよいのでしょうか?
普通にCalendar1.SelectedDateにセットすればいいだけの気がするんだが、
これって読み取り専用か?
0409nobodyさん
2009/05/30(土) 06:09:32ID:???ロードバランサ使って負荷分散するとかしないと厳しそうな気もするけど・・・
監視ソフトでも入れて負荷みないとなんともいえん
0410nobodyさん
2009/05/30(土) 06:17:21ID:???Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text) ←追加
lblChangedDay.Text = txtInputDay.Text
lblChangedDay2.Text = Calendar1.SelectedDate.ToShortDateString
>Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text)
を追加したら上手くいきました。ありがとう!
0411nobodyさん
2009/05/30(土) 07:12:47ID:???>データがロストするんじゃね。
むしろデータがロストしても致命的にならないくらい
セッションをできるだけ使わないのがおすすめだけどな。
おれはセッションにはせいぜいリダイレクトの瞬間のやりとりデータしか入れないぜ。
0412nobodyさん
2009/05/30(土) 11:10:13ID:???設計段階で、Selializableな基底クラスを用意して、それを継承したクラスのメンバ変数で
値を持つようにして、それをsessionで受け渡しすればいい。
InProcで問題が発生してStateServerの利用になっても問題無く移行できる。
0413nobodyさん
2009/05/30(土) 11:48:58ID:???0414nobodyさん
2009/05/30(土) 11:53:13ID:???継承クラスでそのままSerializableできたけどなんでだろう?
0415nobodyさん
2009/05/30(土) 12:56:14ID:???Silializerだと駄目だね
SessionとかだとSerializable属性なしでも通るのか。
知らなかった。サンクス!
0416410
2009/05/30(土) 14:29:16ID:???日付を選択したら、表の右コラムのContentPlaceHolder1に関連情報(Result.aspx)を表示する。
というのを作成しました。
Server.Transfer("Result.aspx?targetDay=" + Calendar1.SelectedDate.Date)
これで対象となる日付を引き渡し、該当する関連情報を表示するところまでできたのですが
なぜかカレンダー表示がその都度初期値(今日の日付を含む月)に書き換えられてしまいます。
選択した日付を含む年月のカレンダーを表示し、且つ選択した日を選択表示にするには
どうすればよいですか?
0417nobodyさん
2009/05/30(土) 14:45:21ID:yVbH19hK俺は落とさないけど。
0418nobodyさん
2009/05/30(土) 15:27:24ID:???stringにDateTime突っ込んだりしても推測して型変換してくれるの?
0419nobodyさん
2009/05/30(土) 15:37:08ID:???戻るボタンでもAJAX使ってると今日の日付にもどっちゃうけど
ただ単に同じページに戻っただけなら、初めてページを表示させるのと同じだから
表示の日付も今日の日付になってるというのは当たり前の話。
日付を選択して違うページに移動し、再び日付選択ページに戻った時、
その日付を維持したいのなら、セッションかクッキーを使用するか、
GETかPOSTで日付データを渡して値を設定するしかない。
0420410
2009/05/30(土) 16:12:33ID:???表左コラム | 右コラム
|
カレンダー | 該当年月日に属する情報
Calendar.ascx | Result.aspx
こんな感じで、カレンダーで選んだ日付に属する情報を表の右コラムに表示する。
Server.Transferを使うことで、選択した年月日の情報を表示することはできました。
ところがResult.aspxが表示された瞬間、Calendar.ascxのカレンダーが初期年月に戻ってしまう。
カレンダー上に、右コラムで表示された情報の日付が選択された該当月が表示されたままにしておいて
同月の前後その他の情報を続けて表示確認したい。
マスターページに共通の見た目のデザインを設定し、この上で
Webユーザーコントロールから必要な項目を選択し、Webフォームに見たい情報をデータベース検索し表示する。
みたいなことができるような仕組みを作ろうかと思っています。
0421nobodyさん
2009/05/30(土) 16:47:09ID:???0422nobodyさん
2009/05/30(土) 17:07:38ID:yVbH19hKちょっと危険なコーディングだがMasterPage側での処理ということで。
ttp://teke348.dyndns.tv/src/up8781.zip
カレンダーなんて、そのうち「ある場合ではこうで、そうでない場合はこう」
とか色々制限がつきやすいものだから、それ自体をユーザーコントロールにした方が吉。
0424nobodyさん
2009/05/30(土) 20:35:56ID:???0425nobodyさん
2009/05/31(日) 03:44:11ID:???認証受けずにページを表示しようとしたら指定のページに強制的に飛ばされる、つーのは
便利だと思うけど。
0426nobodyさん
2009/05/31(日) 04:17:10ID:???0427nobodyさん
2009/05/31(日) 14:48:59ID:???Windowsのアカウントユーザを追加してIDとパスを設定しなくちゃいけないから面倒だからじゃない?
apacheとかでも動的に.htaccessとかにユーザを追加管理しなきゃいけなから
面倒だったと記憶してるんだけど。
フォーム認証ならデータベース等を利用して動的にユーザの追加や削除ができるでしょ。
0428nobodyさん
2009/05/31(日) 17:35:56ID:???けどわざわざやる価値はあんまりないわな。
0429410
2009/06/01(月) 17:45:43ID:???どうもありがとうございます。
MasterPageに複数のWebコントロールを載せて、結果をDefoult.aspxに表示するというコンテンツを作ると、
Sessionを使うと煩雑になるのと、時系列的にPageを切り替えていくのならOKですが、それぞれの
Webコントロール(上のデータ表示)に、同時に反映させるのが難しいかと思いました。
結局、MasterPage画面に配したWebコントロールページに同時にServer.Transferを送ることで
画面上のデータをすべて同期させることができることが解りました。
VIEWSTATEが少し冗長となりましたが。
またアドバイスお願いします。
0430nobodyさん
2009/06/02(火) 22:10:04ID:???int型へのキャストで以下が成立する言語
CInt("+2,7,42,4,6,") = 274246
#全角は入力間違いをしている訳ではない
0431nobodyさん
2009/06/02(火) 23:17:26ID:???まぢかw
0432nobodyさん
2009/06/04(木) 17:26:18ID:???自分で設定汁って書いてあるんだけど、なにこれ?
0433nobodyさん
2009/06/04(木) 18:33:57ID:???0434nobodyさん
2009/06/10(水) 14:01:06ID:???ネットで探していると
「1つのイベントハンドラを複数のイベントに対応付ける」
というのは沢山出てくるのですが、逆は見つけれません。
そもそも無茶な事しようとしているのでしょうか?
具体的にはボタンがクリックされた時にイベントを2つ呼び出したいといった感じです。
0435nobodyさん
2009/06/10(水) 17:51:41ID:???0436nobodyさん
2009/06/10(水) 18:17:32ID:???こういうこと?
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)
{
}
0437nobodyさん
2009/06/10(水) 18:42:20ID:???0438nobodyさん
2009/06/10(水) 18:52:20ID:???0439nobodyさん
2009/06/10(水) 20:41:28ID:???やっぱそうなりますよね。
javascriptだと、onclick="hoge();piyo();" みたいな書き方が出来た気がするので、
そういう単純な方法無いかな〜と思ったんです^^;
>>437, >>438,
そいうデザパタがあるんですね〜勉強してみたいと思います。
04401/2
2009/06/10(水) 21:06:01ID:???コードビハインドで組んでいるのですが、コンテナの使い方がいまいちわかりません
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"))">←エラーが出る(エラーは不明)
04412/2
2009/06/10(水) 21:09:12ID:???メソッドに値を送り込もうとすると失敗します。
例えば、
<asp:Literal ID〜〜〜〜 Text="hoge("aaaa")">
とすればきちんとaaaaが返ってきます
やりたいことは、repeaterの中のデータを一旦検証メソッドに送って、その結果を返したいです。
どなたかアドバイス頂けないでしょうか?
0442nobodyさん
2009/06/10(水) 23:18:50ID:???なんかこんなんつくってたわ
昔作ったから意味は忘れた
<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;
}
0444nobodyさん
2009/06/12(金) 09:14:01ID:???皆さんのお知恵をお貸し下さい。
現在、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)
これだとエラーになっちゃうんです><
0445nobodyさん
2009/06/12(金) 17:26:51ID:???//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;
0446nobodyさん
2009/06/12(金) 17:29:16ID:???//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);
0447nobodyさん
2009/06/12(金) 18:11:28ID:???ありがとうございます。
無事解決できました。
本当にありがとうございました
0448nobodyさん
2009/06/14(日) 03:05:11ID:???ASP.NETになってから、画像も加工できるし、メールも送れるし、FTPも簡単だし、
FileSystemObjectも簡単になってるし、日付計算も簡単になってるしで、
本当に便利になったよね
BASP21すげーーーーーーとかいって使ってたのを思い出したよ
0449nobodyさん
2009/06/15(月) 15:22:19ID:???Repeater使ってるんだけどおかしい?
FormViewはHTMLに展開されるときにデフォルトでtableタグが生成されるのが
いただけない。ちなみに.net framework2.0限定。
あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
<HeaderTemplate>だけだとItemTemplateが無い場合、表示されないし・・
0450nobodyさん
2009/06/15(月) 15:36:10ID:???そこまで文句言うならデザイナにでもパネル突っ込んでガリガリループでHTMLとかコントロール突っ込んでいけば?
0452nobodyさん
2009/06/15(月) 21:15:04ID:???ASP.NET サーバコントロールプロジェクトで自作でhtmlを生成して表示してもいいし、
ユーザコントロールにLiteralコントロールを設置して自分でhtml出力すればいい
>あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
何行表示されても構わないように設計(デザイン)する必要があるわけだから、
極端に言えば何行の表示でも別にいいでしょ
<ItemTemplate>がなければ複数行の動的な生成が難しいんだから一般的には必要ないかと
0453nobodyさん
2009/06/15(月) 21:32:48ID:Ovw0FDNWPlaceHolderの中にコントロールをドラッグ&ドロップしたいんですけど、
プレースホルダーを配置して、この上にドラッグドロップしてみたんだけど無理でした。
どうやるの?
0454nobodyさん
2009/06/16(火) 02:03:02ID:???単にPlaveHolder内にタグを配置したいならデザインビューに切り替えて
<asp:PlaceHolder ID="PlaceHolder2" runat="server">
※
</asp:PlaceHolder>
の※の部分にコントロールをポトペタすればコントロールが配置できる
でも本来、PlaceHolderは実行時にコントロールを生成するコンテナとしての役割が大きいので、
単に配置するだけとか、配置して一斉に非表示にしたいとか目的なら
Panelとか使ったほうがいいと思う。
0455nobodyさん
2009/06/16(火) 20:27:08ID:???ありがとうございます!!!!!多謝です!
デザインビュー上ではやっぱりできないのですね
自分のはFreeのツールだから禁止させられているのかと思いました。
やりたいことは、タブみたいに、ボタンをおしたら、違う画面になる(でも同じWebフォームで処理したい)
みたいな事です。
なので、パネルでやります。
m(_ _)m
0456nobodyさん
2009/06/16(火) 21:10:44ID:???ある特定の一部分だけ非表示にしたり、表示したりするならPanelでもいいけど、
ごっそり変えるなら、MultiViewとViewを使ったほうがわかりやすい
一つのaspxで、入力フォーム→入力確認ページ→実際に登録みたいなこともできるよ
PostBackが仕様のASP.NETだと、そういうのに2枚のaspxが必要だと思ってる人もいるみたいだけど
0458nobodyさん
2009/06/21(日) 11:03:39ID:???いつか間違えてしまいそうで怖いんだが。
0459nobodyさん
2009/06/21(日) 15:17:48ID:???>Web アプリケーション サーバーの複数のディレクトリに置くことができます。
>各 Web.config ファイル内の構成設定 (IIS 認証の設定など) は、
>それぞれのディレクトリ内のソース ファイルに適用されます。
>Web プロジェクトでは、既定の Web.config ファイルの設定に優先する、
>カスタムの構成ファイル (mysettings.config など) を作成できます。
>チーム開発環境では、カスタムのファイルを作成することが必要になる場合があります。
>カスタム構成ファイルの作成が必要となる状況、
>特に共有プロジェクト開発時の必要性の詳細については、
>「Web 参照、Web プロジェクト、およびソース管理の統合」を参照してください。
>Web プロジェクトの場合、ソース管理に追加する必要がある *.config ファイルは、Web.config だけです。
http://msdn.microsoft.com/ja-jp/library/aa290084.aspx
とか?
0460nobodyさん
2009/06/21(日) 15:19:15ID:???FTPとかでの更新ならweb.configだけ異なる権限にしておいて、
勝手に書き換えられないようにしておくとか、そんなんはできないのかな
0461nobodyさん
2009/06/21(日) 15:35:33ID:???ウチの場合は、web.config.dev とか、web.config.release 等の名前で
複数の web.config を用意している。自動デプロイスクリプトを組んでる
ので、その中でデプロイ先の環境を判別して web.config にコピってる。
まあ、普通だな。手作業はとにかく排除するのが基本じゃね。
0462458
2009/06/21(日) 23:22:51ID:???>>460
これはちょっと楽そうだ
読み取り専用属性つけて試してみる。
>>461
だね。ちょっと手を抜いて手作業でしてたけど、後々を考えると
しっかりやった方がいいよね。
XCOPYでゴソってやって、最後にweb.configだけ上書きって
流れだけか。
思考停止してたけど、なんも考える事無かったな。
ありがとう。
0463nobodyさん
2009/06/24(水) 19:17:16ID:???たまに書き換え忘れることもあるがw
web.configに設定する内容を、本番と開発で、全く同じにするか、
間違えると動かない設定にしてるので、書き換えないと本番が動かないようにしてる
一番困るのは、書き換え忘れで本番が変な設定で動くことだからな
0464nobodyさん
2009/06/24(水) 21:51:34ID:???そういうときはディレクトリ分けして、ディレクトリごとにweb.configを統一しといたほうがいいと思うんだけど
0465nobodyさん
2009/06/24(水) 22:53:08ID:???appSettings とか connectionStrings は結構違うでしょ。あとは認証、
ログ設定、例外発生時の挙動なんかも変えたくなると思うけど。
0468nobodyさん
2009/06/25(木) 01:32:47ID:???問題はその中身を書き換えなきゃいけない、ってことだと思うんだが。
>>465が書いてる通りのものは結構書き換えなきゃいけない
と思うんだけど。
0469nobodyさん
2009/06/25(木) 17:13:04ID:???ボタンが押されたら、とある PDFファイル をクライアントに attachment として投げつけて
ラベルの文字を「投げたお」と書き換えたいです。(UpdatePanelの更新)
ですが、UpdatePanel の中では PDF をクライアントに投げつける、ということが出来ないみたいです。
何か良い策はないでしょうか。
インテルのWebサイトとかでは、ファイルの投げ付け&画面遷移を同時にやってるやつがありますが
どんな仕組みなんでしょう・・・(そこにヒントがある気がしてます)
0470nobodyさん
2009/06/25(木) 17:55:06ID:???UpdatePanelで表示してあげればいいんでね?
0471nobodyさん
2009/06/25(木) 18:00:53ID:???これとか?
http://social.msdn.microsoft.com/forums/ja-JP/aspnetja/thread/13d412a8-4416-429e-909e-0af88b528c16
0472nobodyさん
2009/06/25(木) 21:32:10ID:???し、しらんかった・・・
これは便利そうだ。設定変えたいとこだけ全部外だし
出来そうだなー。
結論としては「ディレクトリ毎」っていうのが、実は
「configファイルを分割」っていう意味だったってこと?
だから「web.config書き換えるっていつだよ?」みたいな
話になってたって事?
まぁどっちでもいいが、良いこと知った。トンクス。
0473nobodyさん
2009/06/26(金) 00:25:17ID:???大抵のもんはappSettingに突っ込んで分離してる
0474nobodyさん
2009/06/26(金) 05:38:12ID:???0475nobodyさん
2009/06/26(金) 11:36:26ID:???これは?
location 要素は、ASP.NET 構成 API を使用することによりプログラムから設定できます。また、ASP.NET MMC スナップインの [場所] タブを使用して設定することもできます。
http://msdn.microsoft.com/ja-jp/library/ms178692.aspx
0476nobodyさん
2009/06/26(金) 17:43:41ID:???それはweb.configの指定を特定のパスに限る設定だろ
今問題になってるのは
環境を設定するファイルがあって、本番のそのファイルを開発環境のファイルで上書きすること
で、>>471の方法では、結局上書きする(=書き換える必要がでる)ファイルが
web.configからconnection.config(とか任意のファイル)に変わるだけで
結局上書きしないようにするとか手作業で書き換えるとかする必要がでるんじゃないか、ってのが>>474の主張
web.configから任意のファイルになるだけ判りにくくて混乱の元になる気がするぜ
0477nobodyさん
2009/06/26(金) 19:00:22ID:???location要素をプログラムから設定できるんなら
環境(サーバ名とか)によって任意のファイルを指定できるんでないのかなと思って。
0478nobodyさん
2009/06/29(月) 19:17:18ID:???イメージとしては
class 個人情報(){
private string 氏名;
private int 年齢;
setget〜〜〜
}
//個人情報クラスのリストを戻す
[webmethod]
class 個人情報[] 個人情報リスト(){
List<個人情報> aaa=new List<個人情報>();
aaa.add(new 個人情報(名無し,10));
aaa.add〜〜〜;
return aaa;
}
このような感じで作ってもエラーが出てうまく行きません、独自クラスではなくintやstringといったものなら正常に返せます
よろしくお願いします。
0479nobodyさん
2009/06/29(月) 19:43:32ID: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
0480nobodyさん
2009/06/29(月) 20:51:34ID:JEwwWVNFA*1に1を入れて保存とかそんな感じでお願いします
0481nobodyさん
2009/06/29(月) 22:31:40ID:???すでにあるがサーバ上にあるのか、クライアント側にあるのかわからないけど、
サーバ側なら
http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html
で操作できるんでないかね。
Microsoft Excel 11.0 Object Libraryって奴で。
クライアント上にあるのならサーバにアップロードするなりしないといけないと思う
0482nobodyさん
2009/06/29(月) 23:18:11ID:???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>
0483nobodyさん
2009/06/29(月) 23:18:11ID:???OnClientClickだとポストバック前に実行しちゃうよ
http://proshile.blog.drecom.jp/archive/14
でいけるけど、今ってもっと良い方法がないのかな?
普段1.1使っててわからん。
0484nobodyさん
2009/06/29(月) 23:19:02ID:???つづき
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";
}
}
0485nobodyさん
2009/06/29(月) 23:19:21ID:fVwdImLxといった文字列を追加したいのですが
アプリの本数が多くて、簡単に追加できる方法ないですかね?
0486nobodyさん
2009/06/29(月) 23:30:27ID:???すべてのページでgetを受け取れるようにしたいのか、
すべてのページのハイパーリンクにgetのクエリを付与したいのか
詳しく書いてくれないと何とも言えない。
でもuseridが変更されるとこまると思うから常識的にはsessionを使うべきだと思う
0487nobodyさん
2009/06/29(月) 23:35:02ID:???説明不足でした。getのクエリ文字列に追加したいのです。
sessionを使うのが普通なのは承知していますが
環境の都合上使用ができないのです。(クライアントのCOOKIEも)
0488nobodyさん
2009/06/29(月) 23:42:59ID:fVwdImLxsessionを使用ができないのではなく、
sessionだけではなく、GETのクエリ文字列にもパラメータが必要ということでした。
0489nobodyさん
2009/06/29(月) 23:49:37ID:???response.redirectでやると思うが、?userid=xxxxって追加する専用メソッドを入れたらいいんじゃない?
追加メソッド(string url){
return url+="?userid="+this.userid;
}
みたいな感じで、useridがどこにあるのか知らないけど
どなたか>>478もお願いしますm(_ _)m
0490nobodyさん
2009/06/30(火) 00:00:00ID:???やはり、その方法しかないですかね?
useridはIIS上で保持しています。
URLに付加された状態でProxyを通過させたいんですよね・・・
(言葉足らずで情報が小出しになってしまい申し訳ないです)
0491nobodyさん
2009/06/30(火) 00:31:17ID:???俺なら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)に置換するだけで済むし
0492nobodyさん
2009/06/30(火) 01:25:00ID:???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;
}
でとりあえず動いてるみたいなんだが、どんなエラーなんだ?
0493nobodyさん
2009/06/30(火) 01:26:01ID:???0494479
2009/06/30(火) 09:14:08ID:???ご教授ありがとうございます。おおよその動きは理解出来ました。
>AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
AJAXは使っています。
その場合、提示された処理より簡単に実装出来るのでしょうか?
出来ればこちらのやり方も教授頂けると嬉しいです。
>>483
ご教授ありがとうございました。
0496nobodyさん
2009/06/30(火) 16:05:45ID:???AJAXなら、フォームからフォーカスが外れるたびに入力内容をチェックしにいって、
重複か重複でないかをチェックして、ScriptManager.RegisterStartupScriptで
JavaScriptで定義した変数にbool値を格納する
例 var isDuplicate = true;
登録ボタン押下時に、JavaScriptでisDuplicateの変数内容によって、
onSubmitで表示するconfirmの表示文字を変更させればいい。
cancel時にPostの処理を中止するのはどちらも同じだから。
0497479
2009/06/30(火) 17:26:30ID:???ご丁寧にありがとうございます。
482,484を実装し、期待する動作は確認出来ました。
作成しデバッグしている最中にASPの制御、と言うかスタンドアロン(VB)との違いが良く分かりました。
(それにより)496の内容もすぐに理解出来ました。応用させて頂きます。
ご教授頂いた事に感謝致します。
本当にありがとうございました。
0498nobodyさん
2009/07/01(水) 17:57:52ID:???デザイナにD&Dできるみたいな記述になってるけど、VS2005や2008でも出来たっけ?
SqlDataSourceとかObjectDataSourceコントロールの事じゃないか
0500nobodyさん
2009/07/02(木) 20:39:30ID:ZUKdZhY7今まではポストバックさせてやっていたのですが、そうするといちいち画面が切り替わるのがうっとうしいので画面が切り替わらないで処理をやりたいです。
可能でしょうか?
0501nobodyさん
2009/07/02(木) 20:54:55ID:???0502nobodyさん
2009/07/02(木) 21:15:02ID:ZUKdZhY7ありがとうございます
そうですか、あきらめてjavascript使うしかないですね
0503nobodyさん
2009/07/02(木) 21:46:24ID:???0504nobodyさん
2009/07/02(木) 21:51:06ID:ZUKdZhY7javascriptで実装するにはどういうコードを書けばいいのでしょうか?
0505nobodyさん
2009/07/02(木) 21:57:01ID:???マジレスすると、TextBox.Textに1を入れた後にTextBox.ReadOnlyにtrueを設定
0506nobodyさん
2009/07/02(木) 21:59:45ID:ZUKdZhY70507nobodyさん
2009/07/02(木) 23:41:47ID:???ポストバックしてるけどしていないような感じで実現できるから
0508nobodyさん
2009/07/02(木) 23:48:58ID:ZUKdZhY7当方VB、Cの経験しかありません
0509nobodyさん
2009/07/02(木) 23:56:35ID:???0510nobodyさん
2009/07/03(金) 00:01:26ID:???スタンドアロンアプリでも作ってろよ
0511nobodyさん
2009/07/03(金) 00:11:41ID:WYeGS7LZradiobutton_checkedイベントやdropdownlist_chengedindexイベントでいちいち画面がロードされるのうざいでしょ?
0512nobodyさん
2009/07/03(金) 00:30:44ID:???いや、SqlDataAdapterだ。俺の目が腐ってなければ・・
ちなみにいまVS2008で試したがグレーアウトでデザイナにはドロップできない。
VS2005ではできるか試してもらえる人はいるだろうか。
グレーアウトになってるってことは使うなってことだよなぁ
手打ちでコーディングはできるんだから。
0513nobodyさん
2009/07/03(金) 01:20:01ID:???0514nobodyさん
2009/07/03(金) 01:41:25ID:???>しょうがないじゃん、最近はじめたんだから。
ブラウザは散々使っているんだろうから、その経験則から何が実現可能か不可能か判断できずに、
最近始めたばかりだと開き直るようじゃあ、あなたにWebアプリは向いてないよ。
↓お好きなのドゾ
Silverlight Flash Ajax ActiveX JavaApplet
>>512
標準ではツールボックスにSqlDataAdapterの表示がないんだが、
どれを参照すれば表示されるん?
0517500
2009/07/04(土) 00:48:45ID:gSOLs+sGここって結構無知が多いんだな
0518nobodyさん
2009/07/04(土) 01:41:16ID:???0519nobodyさん
2009/07/04(土) 01:43:34ID:???その場合.NETって名前そのものが変わると思うけどw
0520518
2009/07/04(土) 01:50:28ID:???無知で結構だから、もし実現できるのなら教えてほしいよ
何を勘違いしたんだろうな。
ユーザコントロールつかってもポストバックはするし。
ユーザコントロールはJavaScriptの実装には不向きだから、
AJAXでも実装したんかな?
0521nobodyさん
2009/07/04(土) 02:05:56ID:???0522nobodyさん
2009/07/04(土) 02:19:19ID:???つか、それならAJAX使ったほうが楽でしょ
0523nobodyさん
2009/07/04(土) 04:29:22ID:???つ Page.SmartNavigation
ASPとASP.NETは別物だからちゃんと区別して書こうな
ホントにASP.NETじゃないASPの話だったらスレ違いだがなw
0526nobodyさん
2009/07/04(土) 17:25:28ID:???ASP.NET→JavaScriptの関数の実行(引数引き渡しも含む)
JavaScript→ASP.NETのメソッドの実行(引数引き渡しも含む)
という需要が多そうだな
0527nobodyさん
2009/07/05(日) 11:58:29ID:Km3uJP2Yカラムの幅を狭めると、
デー
タバ
イン
ド
みたいになって縦長になってウザイっす。。
なんで「データバインド」なんて意味のない文字列を表示させるのかな。
これを消したいです。なんか方法ありませんか????
0528nobodyさん
2009/07/05(日) 14:08:13ID:???縦長になるとデザイン上の狂いのあることが発見できることもある
ウザイときもあるが表示のおかげでデザインの狂いを修正できたことが何度かあるよ
従って一長一短
0529nobodyさん
2009/07/05(日) 14:18:45ID:???ここはお前のVSサポートセンターじゃねえ
0530nobodyさん
2009/07/05(日) 14:22:06ID:???0531nobodyさん
2009/07/05(日) 14:33:29ID:???0533nobodyさん
2009/07/05(日) 15:32:32ID:Km3uJP2Y以下のSQLで抽出した2個のカラムを結合した文字列をハイパーリンクに表示させたいです。
select fig_name, fig_number from figure
これで抽出できるのはおのおの、
・fig_name:
'図'と'表'のいずれか
・fig_number:
図表番号。数字。
とします。
そしてハイパーリンクにはこの2個をくっつけて
“図1”とか、“表2”とかにしたいです。
とりあえず、以下のようにやったけどだめでした。。
DataTextField="fig_name,fig_number"
DataTextFormatString="{0}{1}"
どなたか、ヒントでも結構ですのでよろしくお願いします。。
0535nobodyさん
2009/07/05(日) 17:55:40ID:???SELECT (Table.fig_name + Table._number) AS fig_fullname FROM Table
とか。
でもこれだとSQLDataSourceが使えなかったり、
GridViewの編集や削除が使えない可能性があるから嫌われそうだけど。
>>534のTemplaterFieldにしても編集とかできなさげ。
んで、結局、編集、削除、追加は自前で実装して、
どうせ実装するならRepeaterでいいじゃんということに落ち着く流れになりそう。
0536nobodyさん
2009/07/05(日) 21:51:56ID:???ありがとうございます。
RowCreateでデータベースから抽出された結果にアクセスできたので、
そこで文字列をつくって、ハイパーリンクに貼り付けました。
やりかたはダサイかもしれませんが、まぁまだ素人なので。。
0537nobodyさん
2009/07/06(月) 00:03:42ID:???0538nobodyさん
2009/07/06(月) 00:41:21ID:???0539nobodyさん
2009/07/06(月) 01:25:51ID:bdwzJZ3p0542nobodyさん
2009/07/06(月) 12:44:03ID:???それ以前のASP.NETのアーキテクチャに関する仕組みを知りたいということなら
そんなに色あせないで見ることが出来る。
データベース関連ならADO.NETとLink To Entitiesの本を買うべきだし、
コントロールの使い方ならもっと別の本を買うべき。
それに、どうせいろいろやりたくなると、
DataSet+Repeaterコントロールに落ち着くことになるからね
0543nobodyさん
2009/07/06(月) 18:51:33ID:/VP1pSJitextbox型で持ってくることは出来ないのでしょうか?
ctypeで変換しようとするとstring型はtextbox型へ変換できませんってでます
0544nobodyさん
2009/07/06(月) 19:01:42ID:???ユーザコントロールを作るということは、新しいクラスを設計するということ。
ユーザコントロールにサーバコントロールを配置するということは、
そのクラスのメンバ変数にサーバコントロール型のオブジェクトを
privateのスコープで持つということと同じなので、
ユーザコントロール側で、そのテキストボックスのインスタンスを公開するプロパティを宣言すればいい。
そうすれば、ユーザコントロールに配置したテキストボックスのIDは知る必要がない。
でもそれだと隠蔽の意味がなくなってしまうので、
外からでも変更可能なプロパティだけを
ユーザコントロールのプロパティとして再定義して公開するのが普通のやり方。
0545nobodyさん
2009/07/06(月) 19:11:22ID:/VP1pSJiつまりどういうことですか?
コードで書いて教えてください
・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"
今はこんな感じで書いていてだめになっています
0546nobodyさん
2009/07/06(月) 19:32:14ID:???public string Text
{
get { this.TextBox.Text = value; }
}
0547nobodyさん
2009/07/06(月) 19:35:52ID:???すまん無知で
0548nobodyさん
2009/07/06(月) 19:37:50ID:???Get
Return txtname
End Get
End Property
でいいんちゃうか。
0549nobodyさん
2009/07/06(月) 19:41:53ID:/VP1pSJitxtnameだけでIDを送ることができるんですね。
ありがとうございました。
0550nobodyさん
2009/07/06(月) 19:43:38ID:???少なくともユーザコントロールで、所有してるオブジェクトをそのままプロパティで公開するのは止めたほうがいいよ
0551nobodyさん
2009/07/06(月) 19:57:47ID:???0552nobodyさん
2009/07/06(月) 20:16:06ID:/VP1pSJi・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側で操作したいというこです
0553nobodyさん
2009/07/06(月) 20:19:06ID:???0554nobodyさん
2009/07/06(月) 20:21:29ID:/VP1pSJiどうやるんですか?
0556nobodyさん
2009/07/06(月) 22:05:11ID:Igs6oFx6「無効なポストバックまたはコールバック引数です。
イベントの検証は、構成の <pages enableEventValidation="true"/>、
またはページの <%@ Page EnableEventValidation="true" %> を使用して・・・」
っていう糞長いエラーが。。
状況はMultiViewの中のViewのなかのGridViewのなかに配置したTemplateField(イメージボタン)
に、
CommandName="delete"
OnClientClick="return confirm('削除してよろしいですか?');"
ってプロパティ設定をして、ゴミ箱のイメージボタンをおしたら削除されるようにしたわけ。
で、さらにこのGridViewのイベントハンドラを以下のようにしてるわけ。
OnRowCommand = "GridViewMeans_RowCommand"
で、このイメージボタンを雄と件のエラーが発生します。。。
そもそもこのエラーって何を意味するの?
「ぽすとばっくやコールバックのイベントが、それをレンダリングしたサーバコントロールから由来するとだめ」
しかもセキュリティの理由から??
意味が分からない。
意味が分からないから対処方法も想像できない。単にenableEventValidation="false"にすればいいよ、とか
意味も分からず闇雲にトライエラーしたくないし。
だれか、ずばっと、こういうパラダイムがあるから、それを解決するためにこういうセキュリティ上の配慮が必要で、そのために
チェックしてるんだ!!!とか男らしい回答求む。
0557nobodyさん
2009/07/06(月) 22:24:58ID:???http://techbank.jp/Community/blogs/mymio/archive/2008/03/28/381.aspx
0558nobodyさん
2009/07/06(月) 22:53:47ID:???ご回答ありがとうございます。
するってぇと、何でImageButtonをViewStateに保存しちゃまずいんですかね?
そういうモノだから??
0559nobodyさん
2009/07/06(月) 22:56:34ID:???変わりませんでした。。
やはりあの、、原理を。。
0560nobodyさん
2009/07/06(月) 23:10:21ID:???動的に行が生成されるコントロールで、
さらに動的にRepeaterやGridViewなどのような動的に行を生成するコントロールを作成し、
その中でClickイベントを実装すると、その問題が発生するということだったはず。
ページによって存在するかどうかわからないイベントの発生元が存在した場合に、
それを検証する術がないのでエラーになるという感じだったような気がする。
例えばRepeaterの中のLiteralコントロールに、サニタイズをせずに文字列を表示させてしまい、
擬似的にポストバックされるコードを記述されてしまうのを検知するのと区別が付かないとかなんとか。
記事のありかは忘れた。
0561nobodyさん
2009/07/06(月) 23:23:44ID:???おお〜。なるほど!ありがとうございます
分かりません!
でも自分の頭じゃ理解できないってことだけは分かりました。
まぁMFCなんかでもダイアログボックスを表示中に他のタイマーとかのイベントがくると
ダイアログボックスのなかのメッセージポンプがそれを処理しちゃって、
その辺を考えて作らないといけないとか、そんな苦労を思い出します。
要は凝ったフレームワークにありがちな落とし穴って事ですかね。
うーん。困ったw
0562nobodyさん
2009/07/06(月) 23:35:38ID:???・main.aspx
dim TextName as textbox = CType(ユーザコントロールのID.FindControl("txtName"), TextBox)
これでお前のやりたいことはたぶんできるだろう
これをやるべきじゃないとか何とかいろいろあるんだが、
まあそれは勉強してくれと言うしかない
0563561
2009/07/07(火) 00:48:14ID:???ImageButtonだとだめみたいです。
ImageButtonにしてEnableViewStateをFALSEにしてもだめみたいです。
なんか、ImageButtonがだめのかねぇ。
もう寝ます。
0564561
2009/07/07(火) 21:59:56ID:???なんでも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ボタンはポストバックじゃないからかな。
0565nobodyさん
2009/07/07(火) 22:06:15ID:???それこそ、故意にイベントを発生するタグを挿入される危険性を排除するのが目的なんだから
0566nobodyさん
2009/07/07(火) 22:10:13ID:???もっと早く出てきて教えてくれよ。
0567nobodyさん
2009/07/07(火) 22:27:17ID:???0569nobodyさん
2009/07/07(火) 23:52:10ID:???VBに浸りすぎてぜんぜんわからん
0570nobodyさん
2009/07/07(火) 23:57:57ID:ID58Jon/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でプログラムを作成する案件がでてきて、慣れない中苦戦しているもので。。
よろしくお願いします。
0571nobodyさん
2009/07/08(水) 00:10:09ID:???>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
直接デコードしたら表示できる?
>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ファイル経由にしたらデコードできる?
>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?
>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?
0573nobodyさん
2009/07/08(水) 01:35:13ID:ZNTcUj46>>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
>直接デコードしたら表示できる?
>>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
>ファイル経由にしたらデコードできる?
ファイル経由でのデコードはできています。(BASP21利用で)
このファイルをビューアで見ることもできます。
サーバ負荷が高くなりそうなので、ファイル経由は避けたいと思っています。
>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?
BASP21の関数利用の結果がそうなっていました。
ここは理由はよくわかりません。。
>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?
バイナリのまま保存する方法も現在調査中です。
エンコードする方法と、両方を調べている最中です。
どうぞよろしくお願いします。
0574nobodyさん
2009/07/08(水) 09:09:29ID:???モード6と7が対なのはわかるんだけど、
それと、その他のモードに互換性があるのかな
他のは、いわゆるwidestringだけに対応してて、バイナリには対応してないんじゃないのかな。
異なるモード間で互換性がないと意味がないから、
ファイルをエンコードするのに、FSOでファイルを読み込んで、
一度変数に入れてから6と7以外のモードで変換してみたらできるのかな?
0575nobodyさん
2009/07/08(水) 18:32:48ID:???BASP21って専用のスレとかないのか?
それか、サポート付きの有償版みたいなのなかったか?
BASE64ってそんなに難しい規格じゃないから、
自分でデコードする関数書いたらどうだね
0576nobodyさん
2009/07/09(木) 00:56:21ID:???FCL使えって感じだけどな
0577nobodyさん
2009/07/09(木) 17:08:52ID:???0578nobodyさん
2009/07/09(木) 22:37:40ID:???0579nobodyさん
2009/07/09(木) 22:59:29ID:???ページ名がクラス名になってるんだけど、
リネームしてもそのクラス名は変更されないから
リネームしたことでページ名が重複しちゃったんじゃね?
0581nobodyさん
2009/07/09(木) 23:11:57ID:???データベースがらみとか、アドオンの帳票がらみでわけわからん具合になること結構あるから
0582nobodyさん
2009/07/11(土) 14:43:11ID:???0583nobodyさん
2009/07/13(月) 00:21:32ID:???めんどくさいんですが。なんか上手い方法無いですかね?
特に、Repeaterで自動生成されたTextBoxとか、IDもサーバで勝手に振られるのでどうして
いいのか分かりません。
やりたいこと:Postされた値をなんか上手い方法でDataSetに入れてしまいたい。
DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
0584nobodyさん
2009/07/13(月) 01:18:02ID:???具体的には忘れたけど、こんな感じ
■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に格納するクラスを別途作成す。。
0585nobodyさん
2009/07/13(月) 02:12:46ID:???>DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
使い勝手があれだから、きっと絶対必ず役に立たんがBindというのはある。
例えばObjectDataSourceのConflictDetectionを設定してやれば、
UPDATEやDELETEで指定したメソッドに対して、
変更後の値と変更前の値を自動で放り投げてくれる。
0586nobodyさん
2009/07/13(月) 16:29:19ID:???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で解決するかと思ったのですが、
どうも効いてないようで解決方法の糸口が見つかりません。
どなたか詳しい方いらっしゃいませんでしょうか?
0587nobodyさん
2009/07/13(月) 16:53:47ID:???0588nobodyさん
2009/07/13(月) 18:05:58ID:???やってみましたが結果は変わらずでした
固定しているヘッダー行が浮いたような状態になり、
DataGridよりも若干右にズレているのも気になります。
これが問題なんでしょうか・・
0589nobodyさん
2009/07/13(月) 18:25:38ID:???あと改行してメニューが干渉しない位置にヘッダーを表示させて場合はうまくいくのか?
うまくいくのならメニューを表示させたことで、メニューのスタイルシートが、
ヘッダのスタイルシートに悪影響を及ぼしてるんだろうから、
メニューの何が悪さをしてるのか、一つ一つスタイルを削って試して見るしかない
0590nobodyさん
2009/07/14(火) 21:55:30ID:s5DuVBkcASP.net 2.0の、しかもCodeBehind属性を使っているレガシーなアプリをメンテナンスしているのですが、CodeBehindに指定されている.csの内容を修正してもそれが反映されません。
(aspxの内容を修正した場合は反映されています)
ビルドしてプリコンパイルすればいいかと思ったのですが、ビルドしても\binに格納されているDLLが更新されないのです。
おそらくどこかに設定があると思うのですが、見つけることが出来ませんでした。
よろしければアドバイスをお願いします。
ちなみに、Webサイトのプロパティの「MSBuildオプション」→「出力フォルダ」は、修正してみましたが特に変化はありませんでした。
0591nobodyさん
2009/07/14(火) 22:00:55ID:???もしくはdebugフォルダ
0592590
2009/07/14(火) 22:44:54ID:???早速のお返事、ありがとうございます。
が・・・ありませんねぇ、どちらも。
もしかしてプリコンパイルは関係ないのかな? でも、今参照しているbinの中のdll、参照外すと動かなくなるしなぁ・・・。
0593nobodyさん
2009/07/15(水) 01:38:50ID:???参照設定で、他のDLLを参照する設定になってない?
普通、通常に使用しているだけなら、Webサイトで作成していてbin以下にdllが
作られることはないと思う。
だからビルドしても、外部参照のdllは更新されるはずがないような気がする。
webアプリだったら、あまり詳しくしらないのでよくわからん。
0594nobodyさん
2009/07/15(水) 05:36:31ID:???だったらビルドしたらbinディレクトリにあるはずだが
WEBサイトならビルドしてもDLLは(見えるところには)作成されない
プリコンパイルってVSからできたっけ?
というか、参照してるDLLってなんのこと言ってるんだ?
そのプロジェクト以外のDLLをBinに入れて参照してるなら、
そんなもんはそのプロジェクトいくらビルドしても変わるわけないぞ
0595nobodyさん
2009/07/15(水) 05:56:10ID:???IDEからプリコンパイルできると書いてあるね
http://msdn.microsoft.com/ja-jp/library/bb398860.aspx
Webサイトでもコードビハインドだし、
「プリ」ってわざわざ付けるということは、webサイトなんじゃないかと思うんだけど。
0596nobodyさん
2009/07/15(水) 11:45:02ID:???実はプリコンパイルは関係なくて、
>CodeBehindに指定されている.csの内容を修正してもそれが反映されません。
>(aspxの内容を修正した場合は反映されています)
のあたりを詳しく聞く必要があるとみた!
.csの内容を修正しても反映されないって、例えば画面の初期化処理だとか、
ポストバック時の処理を変えたりしてみても以前のロジックが走る、
ってことかな?
.csを削除してみるだとか、新しいページ追加して確認してみるとかはどうでしょう?
プリコンパイルとかWebサイトとかの話はよく分からないので、分かる方お願いします。
0597590
2009/07/15(水) 11:55:15ID:???失礼、「Webサイト」でしたね。が・・・。
>WEBサイトならビルドしてもDLLは(見えるところには)作成されない
あれ? もらってきたソース一式に、\binディレクトリがありますけど・・・?
えっと、binにアプリケーション名.dllを放り込むと、VSの方で勝手にそのdllへの参照設定をします。
その参照設定を外すとdllが削除され、「型 '(アプリケーション名).Global'が読み込めませんでした」ってコンパイルすら通らなくなります。
(当然、「デバッグ」→「デバッグ開始」でも動きません)
それで、「ああ、ビルドしてdllを作り直せば、.csへの修正が反映されるのね」と思ったのですが、
「ビルド」→「Webサイトのビルド」ではDLLが作られない/更新されない・・・おや? というところで詰まっているのです。
うーん・・・別に、開発してるときはプリコンパイルなんてしてくれないくていいのになぁ。
0598590
2009/07/15(水) 11:57:39ID:???おっと、すれ違い失礼。ええ、問題になっているところはソコですね。
ただ、>>597のような考えで「プリコンパイルされたDLLが更新されないのが問題だよね?」と思ったのですよ。
ちょっとやってみましょう>新しいページを追加
0599590
2009/07/15(水) 12:23:54ID:???ダメですね。「型'アプリケーション名.hogehoge'を読み込めません」となります。
.csを無視してDLLを見に行ってるような感じです。
0600590
2009/07/15(水) 19:32:14ID:???結局、.net 2.0を明示的に指定して最初からソリューションを作り直し、そこにソースをコピーして再ビルドをかけました。
何が悪かったんだろう・・・。
※ツリー部にドラッグ&ドロップでコピー可能、しかも関連ファイルまで根こそぎ持っていくのにはちょっと感心しました>VS2008
とりあえず.csの修正は反映されるようになりましたが、やはりリビルドはしないとダメですね。
0601nobodyさん
2009/07/15(水) 19:37:54ID:???ソースファイルのタイムスタンプがおかしくなってるとか、マシンの時刻がおかしくなっているとか
プロジェクトの何かのファイルのタイムスタンプがおかしくなっているとか…。
0602nobodyさん
2009/07/15(水) 19:55:28ID:???たぶん、webアプリケーションと間違えてないか?
それか一つのソリューションに、webサイトプロジェクトと、他のプロジェクトがあって、
webサイトプロジェクトから、他のプロジェクトへの参照設定がされてる。
dllは、他のプロジェクトで作成したクラスのdllだからASP.NETの.csを変更してビルドしても
何の変化もないので不思議がってる。
こんなところだろ
0603nobodyさん
2009/07/16(木) 01:59:14ID:???<div></div>ブロックで囲んだGridViewを配置し、
ヘッダー行を固定しようと、.Freezingのお決まりのCSSを書き
GrdiViewHeaderのCSSにそのFeeezingのCSSを指定したところ、
ヘッダー行は正常に固定する事が出来たのですが、
<div>ブロックで正常に width:450pxと指定しているにも関わらずGridViewのヘッダー行(だけ)が
その<div>ブロックの幅を右横に突き抜けて表示されてしまいます。
一体何が原因なのでしょうか?
※IE7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
指名 | 年齢 | 趣味 | 経験年数 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A 15 || ↑ヘッダー部分だけが突き抜けてしまう。(ここで趣味・経験年数)
B 15 ||
C 15 ||
〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜|
0604nobodyさん
2009/07/16(木) 03:01:51ID:???表現してくれないことがあるから、そのヘッダー行に直接スタイルを適用してみたら?
というか、そういう時は、生成されたhtmlのソースをローカルなどにコピペしてブラウザで表示させるなどして、
関係ないhtmlタグを次々と消していって、目的とするタグだけで確認したほうがいいよ。
まったく関係無いと思われるスタイルが影響している場合があるから。
その目的とする表示を構成しているタグだけを残して他のタグをすべて消去し、
それでも問題が発生するかどうか確認するなどして、
他の要素が影響を及ぼしてる可能性をなるべく排除すべき。
0606nobodyさん
2009/07/16(木) 09:29:33ID:???レガシーなって、もともとはどのバージョンで作ってあったんだ?
それはWEBアプリで作ってあったのか、WEBサイトでつくってあったのか?
>>602
俺がエスパーするに、元がWEBアプリだったのを、今はWEBサイトで修正しようとしてる
今修正した部分はWEBサイトなんで、アプリケーション.DLLに反映されない
既存部分はWEBアプリなんで、アプリケーション.DLLへの参照がないと動かない
ソース全部コピーしたってことは、今全部WEBサイトになったんで動いてる
ま、こんなとこだろう
0607590
2009/07/16(木) 16:43:13ID:???そうですね。*.slnファイルも貰ったのでそのまま開いたのですが、こちらで空のwebサイト、webアプリを作成して比較してみると、webサイトの*.slnのようです。
これで開発してる、って言ってたんだけどなぁ・・・。
0609nobodyさん
2009/07/16(木) 22:19:36ID:???勝手にbinフォルダが作成されてる。その中にaspxに付随する.csやAPP_CODE配下のクラスファイルが
コンパイルされたdllが放り込まれる。aspxのヘッダはこのbinフォルダのdllを見に行くように全て書き換えられる。
別にビルドしなくても、.csのソース付きaspxをWebサーバに配置しても
IISとASP.NETは普通に解釈してくれる(まぁビルドするのと同じことしてるんだろけど)
正式リリース時は速度&セキュリティを考えてビルド方式にしたほうがいいよな。。
0610nobodyさん
2009/07/16(木) 22:25:32ID:???0611nobodyさん
2009/07/16(木) 23:25:29ID:???お前の言うWebサイトとは、VSでのプロジェクトの種類としてのWebサイトか?
一般的な意味でのWebサイトか?
一般的な意味でのWebサイトやWebアプリって言葉と
VSでプロジェクトの種類としてのWebサイトとWebアプリってのは別の話だぞ
binフォルダにDLL作るのはWebアプリだ。ソース修正したらビルドしないとDLLに反映されない
WebサイトではDLLは通常見えるところには作られてない。ソース修正したら自動的にコンパイルされ反映される
これを任意のタイミングで指定したところにDLL作らせるのがプリコンパイル
実際のところはWebアプリかWebサイトかは、VSが.ASPXのページディレクティブをどうするかだけで
ASP.NETは各ページの指定通りに動く。なので混在してても動く
0613nobodyさん
2009/07/17(金) 00:38:13ID:???0614nobodyさん
2009/07/17(金) 00:40:18ID:???・Web サイトの発行ユーティリティを使用する利点
プリコンパイル プロセスにより、コンパイル時エラー、および Web.config ファイルと他の非コード ファイル内の潜在的なエラーを検出できます。
ソース コードは、.aspx ファイル内のマークアップを含め、Web サイトから削除されます。
これにより、知的財産を保護でき、第三者がサイトのソース コードにアクセスしにくい状況を作ることができます。
サイト内のページが既にコンパイルされているため、最初の要求時にページを動的にコンパイルする必要がありません。
これにより、ページの初期応答時間を短縮できます。ただし、ページが動的にコンパイルされる場合でも、以降の要求についてはその出力はキャッシュされます。
・Web サイトの発行ユーティリティを使用する欠点
指定する発行オプションによっては、サイトを変更する際、再コンパイルが必要になる場合があります。
したがって、サイトの開発中、頻繁に変更を加えるような場合にWeb サイトの発行ユーティリティを使用することは実用的ではありません。
Web サイトの発行ユーティリティでは、コンパイル済みサイトをリモート サーバーに配置することはできません。
ローカル コンピュータまたはローカル エリア ネットワーク上の別のコンピュータにのみコピーできます。
0615nobodyさん
2009/07/17(金) 01:10:21ID:???それはMSのコメントなのか?
>Web サイトの発行ユーティリティでは、コンパイル済みサイトをリモート サーバーに配置することはできません。
発行ユーティリティでFTP経由を指定できるんだが、これはリモートサーバとはいわないのか
0616nobodyさん
2009/07/17(金) 01:15:08ID:???0617nobodyさん
2009/07/17(金) 01:30:49ID:???http://msdn.microsoft.com/ja-jp/library/bb398992.aspx
VWDじゃなくても、発行ユーティリティを使用した欠点に、
>Web サイトの発行ユーティリティでは、コンパイル済みサイトをリモート サーバーに配置することはできません。
>ローカル コンピュータまたはローカル エリア ネットワーク上の別のコンピュータにのみコピーできます。
の記述はあるな
FTPの利用は、Webサイトのコピーツールのほうらしいなぁ
0618nobodyさん
2009/07/19(日) 17:06:01ID:???SQLは、ユーザが指定した検索条件でいろいろ動的に変えたいので
SqlDataSourceのSelectCommandでは対処できないのかな?と思ってます。
そこで、「検索」ボタン押下されたときにポストバック処理の流れで
GridViewのDataSouceにArrayとかそんなようなオブジェクトを渡して描画させたいです。
そんなようなやり方でいいんですかね?
0620nobodyさん
2009/07/19(日) 19:04:33ID:???0621nobodyさん
2009/07/19(日) 19:30:24ID:???SqlCommand の Parameter 使うとか。
0622nobodyさん
2009/07/19(日) 23:37:25ID:???0624nobodyさん
2009/07/20(月) 16:03:44ID:???プロジェクトのデータセットを追加して、GridViewにBindするだけ
何かを選択させて条件で表示させたいなら、DataTable.Select("Query")を利用すればいい
0626nobodyさん
2009/07/20(月) 23:36:16ID:???SqlDataSourceなりObjectDataSourceなり
データソースを使わせた方がいいと思うが…。
ページングができませんだの、編集ボタンでエラーが出ますだの言われかねんぞ。
0627nobodyさん
2009/07/21(火) 13:52:20ID:???LINQでアクセスしています。
このDBを定期的に掃除するコードを実行したいので、タスクスケジューラから実行できる、
コンソールアプリのプロジェクトを作成しました。このプロジェクトから、↑のASP.NETのプロジェクトを
プロジェクト参照した場合、
new XXXXDatabaseEntities()
のところで、TypeInitializationExceptionが発生します。
ASP.NET側のプロジェクトのWeb.Configにあった接続文字列をこのコンソールアプリのプロジェクトの
App.Configにコピペしてきたのですが、それでは不十分なのでしょうか?
0628nobodyさん
2009/07/21(火) 17:13:29ID:???いま気づいたが、ひょっとしてDLL側にconfigを用意してそこに接続文字列を書かないといけないのか・・。
0629627
2009/07/21(火) 18:40:41ID:???・DllのConfigは書いても無駄
・App.Configの内容がXXX.exe.configにビルド時にコピーされる
この2つを理解していなかったのが原因でした。
0630nobodyさん
2009/07/21(火) 19:36:42ID:???>コンソールアプリのプロジェクトを作成しました。
ストアドプロシージャで作成してSQLのjobから実行したほうがいいんでないの?
0631627
2009/07/21(火) 20:01:58ID:???ストアドプロシージャは書くのが面倒&書き慣れていないので、LINQで書きたいのです。
また、ログをDBに出力するメソッドなどは既に用意してあるので、
出来ればそのメソッドを用いて、DBの掃除をしたときにログを出力したいのです。
ところで、SQLのjobなら定期的に実行する仕組みがIISかSQL Serverかに搭載されているのですか?
0632nobodyさん
2009/07/21(火) 20:30:30ID:???MSSQLには定期実行するjobの機能がある。ただしExpress以上。
jobがなくても、SQLCMDだったかなで、別途ファイルに保存したクエリを実行できるから、
これをOSのタスクスケジューラーで実行するという方法もあったはず
ストアドプロシージャでも、SQL/CLRを使えば、.NETが使えるから、
Linq To Entitiesも、ログを残すこともできるんでないかな。
.NET3.5でSQL/CLR使ったことないからよくわからん。
0633627
2009/07/21(火) 20:44:49ID:???ああ、SQL Serverにジョブを定期実行する仕組みがあるのですね…。
これは知りませんでした。勉強になりました。
0634nobodyさん
2009/07/23(木) 06:02:37ID:???自分はストアド派だなぁ
その「DBの掃除」がストアド化されていて
後で「ログを出力」という要件が追加になった場合、
ストアドの中だけ弄れば済む。
「後で要件追加(変更)」なんて設計者としては最初から織り込まないといけないと思う。
→ストアド内でログ出力するロジックを追加した方が総工数は下がる
0635627
2009/07/23(木) 13:07:42ID:???> →ストアド内でログ出力するロジックを追加した方が総工数は下がる
それはストアドを駆使して書いてある場合の話であって、ASP.NETでの開発の場合、
ストアド使わずにLINQで殴り書きするほうがインテリセンスも使えて生産性が高いように思うのだが。
0636nobodyさん
2009/07/23(木) 14:04:17ID:???0637627
2009/07/23(木) 14:25:10ID:???SQL CLRは技術的に見ても面白いテクノロジーですが、
LINQに比べると書きやすさがずいぶん劣るように思います。
0638nobodyさん
2009/07/23(木) 15:01:03ID:???プロジェクト全体の保守を含めた生産性の高さが最大になる案件やシステムなら、
そうすればいいじゃんとしか言えない。
0639627
2009/07/23(木) 15:36:04ID:???ああ、ええ、まあ、そうですよね・・。
もう少し生産的な話として・・
LINQで書いたものはCLRに変換されてserver sideで実行されるのですから、
ストアドプロシージャがLINQで書ければ便利な気がするのですが、どうでしょう?
0640nobodyさん
2009/07/23(木) 15:42:28ID:???赤間さんとかの対談の形で
MSDN のページに載ってたんだけど
今探したら見あたらないな
0641627
2009/07/23(木) 15:49:30ID:???これのことですかね?
http://msdn.microsoft.com/ja-jp/data/dd919164.aspx
0642nobodyさん
2009/07/23(木) 16:03:33ID:???0643nobodyさん
2009/07/23(木) 16:11:21ID:???その複数のプログラマがみんな美しいSQL文を書けるわけじゃないし
マニュアル等々で均一化するのも大変
1人のデータベーススペシャリストに
美しいSQL文でストアド作らせてた方が効率いいだろ、と感じる
あと、ASPの場合、外部からのハックキングを想定せねばならず
データベースへのアクセス権限としてテーブルへの直アクセスを許したくない
0644nobodyさん
2009/07/23(木) 16:15:12ID:???関係するクライアントアプリやASP.NETに記述したlinqをすべて書き直すなら、それでもいいんじゃね?
単一クエリなら問題ないが、1行の操作が他のテーブルに影響を与えるなら、
ストアドプロシージャやビューをフルに活用したほうが、
処理をDB内にカプセル化できるから、仕様が変更されても、
アプリケーションを変更する必要がないし他でも簡単に使いまわすことができる。
その典型例がDBを掃除するコード。
引数が必要ないからアプリ側に影響を与えないし、
ループして複数の行に対して処理するだろうからストアドのほうが高速だし、
トランザクションも明示的に処理ができる。
0645nobodyさん
2009/07/23(木) 16:16:25ID:???select * from a;
select * from b;
...
って感じでやって取り込むのがいいの?
0646627
2009/07/23(木) 16:25:09ID:???> 仕様変更でDBのフィールドが一つ増えるたびに、
> 関係するクライアントアプリやASP.NETに記述したlinqをすべて書き直すなら、それでもいいんじゃね?
これについてですが、私の場合、DBにアクセスするコードは、サブのプロジェクトを作ってそこに集約させてあるので、
DBのフィールド1つごとに修正する箇所があちらこちらに発生するということはないです。
ただ、ストアドで処理をDB内にカプセル化するという発想やDBのスペシャリストにストアドを書かせるという発想は
私にはなかったので643,644は本当に参考になりました。ありがとうございます。
0647nobodyさん
2009/07/23(木) 16:31:51ID:???取得したいデータによって、動的に取得したいテーブルが変化するとかへんな設計してなければ、
二つのテーブルから合計値を取得するとか、簡単なものなら
クラスにクエリをたくさん記述して、各ページで再利用してる場合もある
ただ、複雑な計算が必要だったり、テーブル数が多くなる場合には、
MSSQL側に、その計算式をまるごとビューとして登録するか、
テーブル値関数として登録してる。
プログラム側では、一つの表として取得できるのでそれを描画するだけ。
0648nobodyさん
2009/07/23(木) 16:36:22ID:FURNmJTNドロップダウンリストを使用してデータを格納しているのですが
画面上からドロップダウンリストを操作した時に、表示される項目の向きが
常に下方向のみ表示できる方法はないでしょうか?
________
[_______]▼
項目A
項目B
項目C
このように表示したいのですが・・・。
現状だと▼ボタンを押して表示されるデータが、リストボックスの中央から
表示されているような状況です
宜しくお願い致します
0649nobodyさん
2009/07/23(木) 16:36:55ID:???それだと、仮にクライアントアプリだと、修正されるたびに、すべてのPCにデプロイする必要があるから面倒
DBの掃除コードはコンソールアプリからだけの実行かもしれないが、
仮にコンソールアプリからでもASP.NETからでも利用したい機能が発生した場合、
一つのプロジェクト内のクラスが変更になれば、両方をデプロイなり発行しなくちゃいけない。
DBに登録すれば、それに関するストアドの修正だけで済むので、
クライアントもASP.NETもコードを変更する必要がないので。
0651nobodyさん
2009/07/23(木) 17:10:18ID:???よほどの理由がない限り、DBMSへの機能依存を前提とした設計は
避けたほうが無難じゃね?
0652nobodyさん
2009/07/23(木) 17:18:22ID:???コンソールとASPでやってて、SQLを別プロジェクトにしてる時点で、
同じDLLをASPとコンソールの二つからみてるわけだから同じじゃん
異なるバージョンのDLLで稼働してるのが気持ち悪くない人なら別にいいけど。
>>651
DBそのものの変更の可能性を考えるのなら、
使用言語が変更しづらくなる可能性も考慮しなきゃw
ストアドなら、そこにアクセスして操作できる言語なら
言語に依存せずに利用することができるとも言えるw
0653627
2009/07/23(木) 17:25:10ID:???> 同じDLLをASPとコンソールの二つからみてるわけだから同じじゃん
サーバーサイドだけならdeployする手間が、普通のクライアントアプリとは違うので
>>649の「それだと、仮にクライアントアプリだと、修正されるたびに、すべてのPCにデプロイする必要があるから面倒」
という問題は無いかな、と思いました。
> 異なるバージョンのDLLで稼働してるのが気持ち悪くない人なら別にいいけど。
この部分がいまひとつ理解できていないのですが、私の構成は次のようになっています。
コンソールプロジェクト = DBの掃除を行なうコードを書いたプロジェクト(A) + DBへアクセスするためのサブプロジェクト(B)
ASP.NETのプロジェクト = 普通のASP.NETのプロジェクト(C) + DBへアクセスするためのサブプロジェクト(D)
上の B = D で、これはどちらも同じバージョンのDLLなのですが・・。
0654nobodyさん
2009/07/23(木) 17:34:37ID:???別に、あなたのやり方を否定してるわけでも、自分のやり方を推奨してるわけじゃなくて、
相反する考え方があるという事なんで、あくまで一般論の話ね。
どんな想定かわからないけど、複数のものを変更しなくちゃいけない場合、
その時点で変更し忘れ等のミスが発生する可能性が高まるということ。
例えばwebサーバが複数あるとか。
>上の B = D で、これはどちらも同じバージョンのDLLなのですが・・。
ASP.NETのプロジェクトの開発で何か変更になったとき、
サブプロジェクトDのDLLを変更するのはいいけど、
その時点でBに反映させなければ、異なるバージョンの物でそれぞれが動作している
という気持ち悪い状況になるでしょ。
そういうやり方をしてるなら、Dが変更されたら、変更されたDLLをBとして反映する
必要があるから、結果的に複数のものを変更する必要があるんじゃないの?という話。
BとDが異なるバージョンのDLLで動作しているのが気持ち悪くない人というのは
そういう意味。
0655627
2009/07/23(木) 18:10:04ID:???ああ、なるほど。意味がわかりました。
> その時点でBに反映させなければ、異なるバージョンの物でそれぞれが動作している
> という気持ち悪い状況になるでしょ。
確かにそれはそうですね。
私はdeployの作業自体はスクリプトを書いて自動化してあるのですが、そこに書き忘れたら、
というのはありますね。
0656nobodyさん
2009/07/23(木) 18:33:32ID:???EntityFrameworkのほうで頑張るしかないな
0657nobodyさん
2009/07/23(木) 21:15:25ID:???DBMSは導入先の環境・都合で変わりうるでしょ。開発言語に関してはそれはまず有り得ない。
大体、「開発言語を変更しろ」なんてのは事実上「1から作り直せ」と同義なんだから、
ストアド部分だけ流用できたって、たいして嬉しくないよ。
0658nobodyさん
2009/07/23(木) 21:33:24ID:???データベースのソフト(MySQLたのOracleだのMSSQLだの)を差してるなら、
導入先の環境、都合でこれらがそんな頻繁に変わるか?
データだって移行せにゃいかんし、
そもそもクエリだってデータベース間で関数名や、その引数なんかに違いがあるんだから、
言語が統一ならどんなDBであってもまったく変わらないなんて完全な錯誤だと思うんだけど。
あるシステムでデータベースを異なる製品に変更しろなんて要求があったら、
1から作り直すのと同じだと思うし、あまりの仕打ちにそれ以上に腹が立つわw
0659nobodyさん
2009/07/23(木) 22:08:49ID:???ただし、金と時間はくれよな!
0660nobodyさん
2009/07/24(金) 12:02:04ID:???JavaScriptで使っているデータを1日1回、DBから生成して .js ファイルとして書き出しておくことを考えています。
その .js ファイルを IIS7でホスティングすることになるのですが、
「DBから生成して .js ファイルとして書き出しておく」ときに、テンポラリに書き出して、
.NET FrameworkのFile.Copy(src , dst, overwrite = true)で前のファイルに上書きしようと考えています。
ところが、このファイルの書き出し中にこのファイルをクライアントブラウザから要求されて
IIS7が読み込もうとしたとき、コピー中の中途半端なファイルがクライアントブラウザに渡されます。
この挙動は望むものではなくて、出来れば、コピー前の古いファイルか、コピー後の新しいファイルかの
どちらかをクライアントブラウザに渡して欲しいのです。
これはIIS7の設定で解決するのでしょうか?それとも、File.Copyを使うのが良くないのでしょうか?
0661nobodyさん
2009/07/24(金) 15:08:26ID:???コピー中はファイル存在せず
0662nobodyさん
2009/07/24(金) 15:10:12ID:???hoge.new で予め作っておく
hoge.js → hoge.bak にリネーム
hoge.new → hoge.js にリネーム
hoge.bak を削除
0663nobodyさん
2009/07/24(金) 17:35:30ID:???javascriptって.jsしか無理なんだっけ?
自分なら.jsファイル(もしくは変更されるデータ)をデータベースから取得し、
アクセスがあるたびに動的に生成するな
ファイルを作成するプログラムが、バッチ処理の役割も果たしていて、
日に1回の集計処理を行ってるとすると、若干厄介かもしれないけど
0664660
2009/07/24(金) 18:02:37ID:???それだと hoge.js → hoge.bakにrename中にアクセスされるとnot foundになるのが
嫌なのです。その2つのrenameは実際にはほぼatomicに行なわれるとは思うのですが。
>>663
確かにデータベースから流しても良いのですが、そのオーバーヘッドが嫌なのです。
(自己解決)
NTFSは次のようにtransactionをサポートしているらしいので
面倒ですが、これを使うことにします..。
Enhance Your Apps With File System Transactions
http://msdn.microsoft.com/en-us/magazine/cc163388.aspx
0665nobodyさん
2009/07/24(金) 18:24:53ID:???同じ.jsだとIEでキャッシュ扱いされそうな気がするんだが、その辺はどうなんだろ
レポート頼む
0666660
2009/07/24(金) 19:23:06ID:???> 同じ.jsだとIEでキャッシュ扱いされそうな気がするんだが、その辺はどうなんだろ
それはIISのファイルのexpireの設定次第だと思います。
0667nobodyさん
2009/07/24(金) 19:40:49ID:???0668660
2009/07/24(金) 20:25:23ID:???http://forums.techarena.in/software-development/1193025.htm
にサンプルがありますがファイルの拡張子ごとにexpireする時間を設定できるようです。
このうちjsのexpireを1hourぐらいに設定しておけば、>>665 の問題は解決するのではないかと。
0669nobodyさん
2009/07/24(金) 22:19:14ID:1HXeI2xcそんな問題おきなさそうだけどなぁ。
ファイルシステム書き換えるだけでしょ。
Windows の Copy コマンドとか使えないのかな。
0670660
2009/07/24(金) 23:37:28ID:???> 生成し終わったファイルをコピーして別のファイル上書きするだけなら
> そんな問題おきなさそうだけどなぁ。
起きます。System.IO.File.Copyでコピーした場合、ファイルコピーが開始されると
同時に、クライアントブラウザへの古いほうのファイルの転送が中断され、
結果として中途半端なファイルがクライアントブラウザに渡されます。
WindowsのCopyコマンドというのが何を指しているのかわかりませんが、
DOSプロンプトのcopyコマンドのことでしたら、これと同じ挙動のようです。
0671nobodyさん
2009/07/25(土) 01:29:42ID:WtyVOn10>アクセスがあるたびに動的に生成するな
うわ、死んだ方がいいなこいつw
0672nobodyさん
2009/07/25(土) 02:03:30ID:???なんで?
それが駄目ならデータベースからデータを取得して、
動的に中身を生成するasp.netの全否定になると思うけど?
0673nobodyさん
2009/07/25(土) 02:15:27ID:???0674nobodyさん
2009/07/25(土) 02:19:13ID:???個人的には全部ソースで作ればいいじゃんと思うんだけども。
0675nobodyさん
2009/07/25(土) 02:27:23ID:???データベースからデータを取得してhtmlを生成する仕組みで動作してる
aspx全般のことを言ってるのに、asp=db必須なんて言うのは論理のすり替え
0676nobodyさん
2009/07/25(土) 03:11:46ID:???ストアドに限らず、viewやテーブル値関数、トリガーを含めてなら便利だし、結構使う
問題なく動作してるなら、別にソースからでもいいんじゃない?
メリットはデータベースを一つのオブジェクトとみた場合、データの操作はデータに近いところで行うという、
可能な操作や状態のみ閲覧でき、実装を隠蔽できるOOPのメリットと併せて考えればわかりやすいと思うけど
あとは複数クエリの実行なら、ストアドのほうが処理が速いということかな
ASP.NETとはいえ、DBとWEBサーバは別だろうから、DB-WEB間のネットワークトラフィックを最低現にできるメリットもある
0678nobodyさん
2009/07/25(土) 08:21:37ID:BV/bwvMa>>675 からなんで >>677 な意見が出るのか理解できない…。
>>673 はまぁ極端ではあるけど
>>672 の文章自体誤解を受けかねない部分はあるからまぁ仕方ないのかなって気はするけど。
まぁでもなんかとにかくかみつきたくてかみついてるような印象はあるか。
0680nobodyさん
2009/07/27(月) 09:33:53ID:???どこまで極めないといけないのか知らんが
js ファイルを作成する都度、別ファイル名にして、
aspx 側で食わせる js ファイル名を動的に変更させたらどう?
0681sage
2009/07/27(月) 10:06:33ID:???ReadOnlyのプロパーティをtrueにすればLabel、falseにすればTextBox、みたいな。
TextBoxを変更不可にするんじゃどうしても見た目的に駄目なケースがあるんで。
0682nobodyさん
2009/07/27(月) 10:34:22ID:lA2VJ4lQ0683nobodyさん
2009/07/27(月) 14:43:15ID:???ボタンが押されたら内容をチェックして、何らかのエラーがあればエラーのあったテキスト
ボックスの背景色を変えたいんですが、方法が分かりません。
テキストボックスは動的に生成しているので、 プロパティで変更することも出来ないみたいで。
0685nobodyさん
2009/07/27(月) 15:33:45ID:???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);
}
}
あとはお好きにどぞ
0686nobodyさん
2009/07/27(月) 15:59:05ID:???683は、validationをclient-sideで行なって、かつ、TextBoxとLabelとの切り替えもclient-sideで
行ないたいということなんじゃない?
まあJavaScriptで書くしかないわな・・。
ASP.NET、client-sideで処理するためのtool setが用意されていないので
何かとJavaScriptを書かないといけなくて面倒なんだな。
0688nobodyさん
2009/07/27(月) 17:09:31ID:???何がjQueryで大丈夫なのかは知らないが、
あまりにjQueryとの親和性が悪いので
ASP.NET4.0ではjQueryを統合するとか何とか。
0689nobodyさん
2009/07/27(月) 17:42:49ID:???○ASP.NET AJAXがあまりにjQueryとの親和性が悪いので
0690nobodyさん
2009/07/27(月) 20:19:11ID:???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;
}
}
}
0691nobodyさん
2009/07/27(月) 21:07:41ID:???> そもそもClientでValidationを行うのが間違いだし
何故間違いなの?余計なトラフィック増やしたくないから、まずclient-sideで行なって、
サーバーはサーバーで再度validationを行なうのが常識でしょ。
0692nobodyさん
2009/07/27(月) 21:20:16ID:???>何故間違いなの?
ああ正確にはClient「だけ」だな 言葉足らずですまんかった
>余計なトラフィック増やしたくないから、まずclient-sideで行なって、
>サーバーはサーバーで再度validationを行なうのが常識でしょ。
入力内容をポストしてValidateするのと、JavaScriptでチェックするのの、
どちらが容量が少ないかだけの観点なら、失敗される予想回数と、
Postされるデータの容量と、Validationに必要なJavaScriptの容量が関係するから、
一概にClientでチェック=トラフィックが低いとは言えないけどね
0693nobodyさん
2009/07/27(月) 23:45:26ID:???> 一概にClientでチェック=トラフィックが低いとは言えないけどね
ああ、なるほど。トラフィックという観点ではそうだね。
実際は、ASP.NET ajaxでも、アクセスされるごとにサーバー側では
モデル等を再構築するのでアクセスごとのサーバーの負荷は並々ならぬものがあるので
なるべくならclient-sideで、というのは信念としてあるわけだけど。
0694nobodyさん
2009/07/27(月) 23:49:45ID:???動的生成したjsの内容をいキャッシュしとけばいいよ。
ってか良くやる方法だよ。
あんまりキャッシュとか活用されないことが多かったりするけどね。
0695nobodyさん
2009/07/27(月) 23:52:13ID:???実質的にはクライアントでも検証を行う方が有利なことが多いんじゃないかと思うけどね。
0696nobodyさん
2009/07/27(月) 23:55:29ID:???jsファイルでやりたいなら、ashxハンドラなどで、ファイルを読んでキャッシュして
リクエスト時にはそれを返す方法でもいい。
ファイルの更新時刻を見て、例えば一秒以内程度なら前の結果を返すとか自由に制御できる。
0697nobodyさん
2009/07/28(火) 00:30:07ID:???そこらへんまで行くと、完全に実装にかかるコストやなんやらとのトレードオフ
ISDNとか56kモデム全盛の時代は帯域が狭いから、
トラフィックも考慮されてたけど、今じゃよほど特殊な環境やページでなければ
トラフィックを気にして設計することなんかほとんどない
その証拠に、画面を描画するcssも、よくあるライブラリを記述するjsも、
必要な部分だけincludeしてるわけじゃなく、サーバに対して1つだけを設定してるだけでしょ
さらに言えば、今時、JavaScriptで入力チェックしてるサイトも少数派になってる
どうせ両方に実装するのならJavaScriptのほうは不必要という考えもできるからね
0698nobodyさん
2009/07/28(火) 02:26:18ID:FCPdlHYK自力でScriptをゴリゴリ実装するのは後で他人が多大なる被害を被るのでやめてくれ。
んなもんサーバ側でやればいいだろーが。
0699nobodyさん
2009/07/28(火) 08:13:31ID:???自前の関数から呼んでるのとかあったな
0700nobodyさん
2009/07/28(火) 09:19:48ID:???そんなの、いくらでもエンドユーザが改変可能じゃん。
原則は、全部のデータをサーバに丸投げして、あとはサーバ側でチェック。
仮にclient側のjavascriptでチェックしてても、全く同じチェックをサーバ
側でも再実施。だったら実装の手間隙考えて、微々たるトラヒックの事なん
か気にしない。(=clientではチェックしない)
0701nobodyさん
2009/07/28(火) 11:02:01ID:???ってまあ言いたいことは分かってるんだけどな
0702Appri童貞
2009/07/28(火) 17:08:04ID:sYPKb5BWエラー発生モジュール kernel32.dll、バージョン 5.2.3790.4480、
エラー発生アドレス 0x0000bef7
こんなログ出た人いますか?
0703nobodyさん
2009/07/28(火) 17:20:27ID:???聞く前にぐぐれ
kernel32.dll 0x0000bef7 5.2.3790.4480
でぐぐったら、1つ目のリンクにSystem.OutOfMemoryExceptionがどうとか書いてあるぞ。
0704Appri童貞
2009/07/28(火) 17:33:53ID:sYPKb5BW0705nobodyさん
2009/07/28(火) 19:06:55ID:???0706nobodyさん
2009/07/28(火) 19:48:08ID:???0707nobodyさん
2009/07/29(水) 03:14:53ID:S6cUwBjXゴメン、今のプロジェクトで __doPostBack 書いてる。
0708nobodyさん
2009/07/29(水) 03:30:54ID:???別に問題ないと思うけど
0709nobodyさん
2009/07/29(水) 07:38:21ID:???しかしだからって、__doPostbackを自前で呼ぶことが許容できるかというと微妙。
十中八九、代替する方法があるだろうしな。
0710nobodyさん
2009/07/29(水) 19:40:32ID:???ClientScriptで動作させることが前提の非ビジュアルコンポを作ったら楽かもしれない
つか、ICallBackEventHandler試したことないから、やってみようかな
0711nobodyさん
2009/07/29(水) 20:30:18ID:???<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"では問題ありませんでした。
これは何かの制限でしょうか?
0712nobodyさん
2009/07/30(木) 01:45:47ID:6Jkou0XR0713nobodyさん
2009/07/30(木) 02:45:19ID:???0714nobodyさん
2009/07/30(木) 03:29:35ID:???コールバックとポストバックは似て非なるものだから
どうしてもポストバック使いたいときもあるだろう
つか1.1まではそれしかなかったしな
ダメな理由はない
まあ、見通しが悪くなることが問題といえば問題
だがそれはコールバックでも同様
0715nobodyさん
2009/07/30(木) 06:36:24ID:???だから相関関係が無くなる
0716nobodyさん
2009/07/30(木) 07:36:36ID:???0717nobodyさん
2009/07/30(木) 08:11:07ID:???もちろん最終的には開発者の自由なんで、あくまで俺の見解として。
まず、前にも書いたがそんなことをしなくても
十中八九、正攻法で解決できると予想される。
また、他に方法がなかったとしても、
果たして裏道を使ってまで解決する要件か疑問が残る。
次に、そのような組み方は「らしくない」と感じる。
極端な例えだが、Responce.WriteでHTML出力してたり、
GridViewに仕込まれた無数のhiddenを見ている気になる。
最後に、フレームワークを使っていて、
ハッキング(裏道の利用)に手を染めたら負けかなと思ってる。
0718nobodyさん
2009/07/30(木) 14:41:52ID:???違う
最初は正しかったが、IDEでaspxの何かを変更をすることで、
結果的に間違ったものになったということ
基本的にIDEの機能や本来のやり方と無縁だからこうなる
0719nobodyさん
2009/07/30(木) 18:15:21ID:???それはスクリプトでIDなんかをハードコーティングするから悪い
スクリプトをサーバコントロールで動的に生成して出力するようにすれば
サーバコントロールとの関係は崩れない。これがAPS.NET流じゃないかな
まあ、__doPostback直接書くのはお勧めじゃない。GetPostBackEventReference使えと
.aspx側(html側)にスクリプト書いたとしても、動的に変更する必要があるところは
実行時バインド式で書いとくのが通常
0720nobodyさん
2009/07/30(木) 21:07:58ID:???これが読みにくくて判読しにくいんだよな
そもそもサーバサイドスクリプトがcsに書かれてるのも違和感だし
うまく解決できないものか
0721nobodyさん
2009/07/30(木) 21:46:45ID:???0722nobodyさん
2009/07/30(木) 22:11:19ID:???GridViewによるマスタメンテを実装しているのですが、GridViewはEnableViewStateをfalseにしないと更新が出来ないそうですね。
現在、ロジック側でConnectionStringを設定するつくりになっているので、EnableViewStateがtrueでないと動かないのです。
ということで%一行目%しかないかと思ったのですが、どこか参考になるURLなどご存知の方がいらっしゃれば、ご教授いただければ幸いです。
よろしくお願いします。
0723nobodyさん
2009/07/30(木) 22:18:30ID:???そうなの?初めて聞いた。
>ロジック側でConnectionStringを設定するつくりになっているので、EnableViewStateがtrueでないと動かないのです。
そうなの?これも初めて聞いた。
0724nobodyさん
2009/07/30(木) 22:21:01ID:???同じ環境でGridViewから更新処理してるが、EnableViewstateはTrueのままだぞ。
あと編集処理は通常CommandNameがEditであって、
更新はUpdateだから同じものでも無いはずなんだが。
まぁイベントハンドラならOnCommand辺りでフックすればいいんじゃないか。
と、ここまで書いて思い付いたが、
もしかしてObjectDataSource等をかまさずに
直接DataSourceにオブジェクトを割り当ててるとか?
0725nobodyさん
2009/07/30(木) 22:26:48ID:???VS2008+MSSQL2005
0726nobodyさん
2009/07/30(木) 22:41:33ID:???IsPostBackがtrueの時にDataBindするとイベントが発生しないということと、
ポストバックしてEnableViewStateがtrueの時だと、
取得時のデータと異なる可能性があるというデータの整合性や楽観的ロックの
関係とごっちゃになってるような気がする。
0727722
2009/07/30(木) 23:43:56ID:???というと、これはガゼ?
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=6830&KLOG=17
ttp://yaplog.jp/iamcat/archive/23
(1)削除は出来る
(2)更新も、少なくともSQLは流れてる
※UpdateCommandのSQL文弄るとエラーになるので
から、画面から入力した内容がUPDATE文に流れていないのだと判断したのですが・・・。
>>723
>>ロジック側でConnectionStringを設定するつくりになっているので、EnableViewStateがtrueでないと動かないのです。
>そうなの?これも初めて聞いた
初回は動くんですが、ポストバックするとConnectionStringが元に戻ってしまうらしいんですよ。
Page_loadで毎回代入してるはずなんですけどね・・・。
0728nobodyさん
2009/07/30(木) 23:58:28ID:???>というと、これはガゼ?
それは、GridViewにデータをバインドした後に、誰かがデータを変更した場合の話
初回アクセス時にデータを取得し、それ以降はサーバとブラウザの間でポストバックして、
データを持ち回りしているので、その間にデータベースのデータが変更されても、
変更されたデータとして反映されないということ。
>初回は動くんですが、ポストバックするとConnectionStringが元に戻ってしまうらしいんですよ。
そう考えるとConnectionStringが元に戻るんじゃなくて、表示されるデータが戻ってるだけでは?
ConnectionStringをLabelなどに表示してみて、本当に変わっているかどうかチェックしてみたほうがいい
0729728
2009/07/31(金) 00:08:52ID:???System.ArgumentException: 無効なポストバックまたはコールバック引数です。
の理由にはならないね
ただ、ポストバックで特殊なことをしてなければそんなエラーはでないから普通は関係ないはず
0730nobodyさん
2009/07/31(金) 00:14:03ID:dsR5PDEAC#でウインドウアプリ作るときはプロジェクトの設定して
Conditional属性つければ、デバッグ時のみコードを実行させることが
できますが、同じようなことをASPでできないものでしょうか?
#if DEBUGでの切り分けはあんまり使いたくないなぁということで・・・
属性じゃなくても、似たようなことができる方法教えてもらえると助かります。
0731730
2009/07/31(金) 00:16:46ID:dsR5PDEAASP.NETです
言語はC#です
0732nobodyさん
2009/07/31(金) 02:18:59ID:???>そもそもサーバサイドスクリプトがcsに書かれてるのも違和感だし
クライアントサイドの間違いじゃないのか?
サーバサイドのスクリプト(プログラム)が.csに書いてあるのは普通だろう
そのために.aspxと.aspx.csに分離してあるんだから
まあ、サーバサイドとクライアントサイドのコードが混在すると
読みにくくて判読しにくいのは同意するが、これはWEBアプリの宿命的な部分もあるしな
ASP.NETな開発で考えると、そこはコントロールの作成者が苦労すれば、
その利用者は何も考えなくてよい、ってことなんだが...最大の成功例はAjaxToolkitか
実際はカスタムコントロールなんて作らんとページロジックに書く場合がほとんどだろうし
作ってもコントロール利用者=コントロール作成者な場合が多いからなw
0733nobodyさん
2009/07/31(金) 19:40:32ID:???WindowsUpdateはクソだな
0734nobodyさん
2009/08/01(土) 09:06:35ID:7MJE4N/Jhttp://www.microsoft.com/downloads/details.aspx?FamilyID=d34f9eaa-fcbe-4e20-b2fd-a9a03de7d6dd&DisplayLang=en
0735nobodyさん
2009/08/01(土) 11:34:44ID:???0736nobodyさん
2009/08/01(土) 11:58:07ID:???携帯向けのことも考えるとMVC以外あり得ん
0737nobodyさん
2009/08/01(土) 13:47:25ID:???0738nobodyさん
2009/08/01(土) 15:10:04ID:???って俺は思ったんだが。
他のフレームワークでのMVC開発全くやったことなかったし。
0739nobodyさん
2009/08/01(土) 15:45:55ID:???MVCならResponse.Writeで全部はき出すのとそんなに変わらん
0740nobodyさん
2009/08/01(土) 15:56:50ID:???0741nobodyさん
2009/08/01(土) 16:01:59ID:???それ以上でもそれ以下でもない。
0742nobodyさん
2009/08/01(土) 16:07:10ID:???0743nobodyさん
2009/08/01(土) 16:12:12ID:???0744nobodyさん
2009/08/01(土) 22:28:24ID:Xxdx6Cb4今までのASP.NETでは、まともに単体テストやろうとしたらかなり面倒だよね。
0745nobodyさん
2009/08/01(土) 23:07:40ID:???0746nobodyさん
2009/08/02(日) 16:46:34ID:Ql7mD23J0747nobodyさん
2009/08/02(日) 21:54:48ID:???これは便利だね
0748nobodyさん
2009/08/02(日) 22:00:36ID:???0749nobodyさん
2009/08/03(月) 00:39:33ID:???0750nobodyさん
2009/08/04(火) 10:35:52ID:???当然だろ常考。こっちは設計書に忠実に実装してるだけですが何か。
ページ切り替えとかの実装を要求されるンかなぁ。
更新系の画面でページ切り替えとか、考えることが増えてマジウザイんだけど。
0752nobodyさん
2009/08/04(火) 14:09:01ID:???0753nobodyさん
2009/08/04(火) 19:43:51ID:???横方向にTextBoxが40×Repeaterで500ループ、なので入力チェックの実装はそれほど大変では
ないのですが、、、
実際に運用した際の入力の手間については考えていません。
0754nobodyさん
2009/08/04(火) 20:38:23ID:???0755nobodyさん
2009/08/04(火) 20:45:22ID:???でも設計に口出ししなかったんだから仕方ないな
0756nobodyさん
2009/08/04(火) 21:24:45ID:???それがわからないと最適解はわからんよね
NDAとかで具体的に話せないなら、似たような事例で
0757nobodyさん
2009/08/04(火) 22:30:19ID:???グリードってGridView?あんまりGridViewを用いるメリットが思いつかない・・・
ちなみに、サンプルに良くある「行毎にある編集ボタンを押して編集モード、編集が終ったら行ごとの更新ボタ
ン押下で再び参照モード」 って挙動は駄目なんで。
ユーザはあくまでExcelへの入力のごときフィーリングを求めてるみたい。
>>755
詳細設計から参加だから、もうどうしようもなかった。
ポストは、xmlに定義した内容を見て、Request.Paramsを分解してDataSetに突っ込むっていう部品を作っ
たんであまり気にしてません。VIEWSTATEは・・・Sessionに突っ込んでるけど、恐ろしいサイズになってそう。
>>756
顧客情報。
1営業担当あたり500人程度を想定してるんで。
0758nobodyさん
2009/08/04(火) 22:36:00ID:???repeater全体にlinkbuttonつけたんですが、
そのどこかの行をクリックするとその行だけ詳細パネルが開いて、他の行もそのまま表示ってしようとしたところ、
パネルは開いたのですが元々あった一覧行が消えてしまいます
何が原因だと思いますか?
0759nobodyさん
2009/08/04(火) 23:01:36ID:???Excelでいいじゃんって言ったらしばかれそうだなw
0760nobodyさん
2009/08/04(火) 23:02:09ID:???どういう契約関係かわからんが仕様書段階で忠告があってしかるべき仕様だよな
仕様通りつくって運用上の問題が発生したのなら、当然、別料金で作り直しでしょ
仕様の設計者が社内の人間なら、泣く泣く作り直すしかないね。
設計者に飯でもおごってもらえw
それはともかく、初めからマトリクス状に500行あるってこと?
それともユーザを追加していくうちに最大で500行まで増えそうってこと?
前者なら設計が最悪、後者なら20行ごとにページングするしかないね。
各行ごとに編集や削除ボタンを設置しておけば、表全体に対して入力チェック
する必要ないし、PostBackの容量も少なくて済むし。
0761nobodyさん
2009/08/04(火) 23:07:32ID:???>repeater全体にlinkbuttonつけたんですが、
各行に1個のボタンを付けて、それをクリックすると行の詳細が、
パネル(パネルってなに?)に表示されるってことかな?
んで、クリックするとなぜかそのクリックした行のデータだけ
repeaterから削除されてるってこと?
いまいちどういう動作をしてるからわからんので、
記述したプログラムをどこかにupもしくは
操作している最中の動きをスクショでとってどこかにup
0762nobodyさん
2009/08/05(水) 00:32:56ID:???大抵が、パフォーマンスが出ないのは作りがしょぼいだけ。それを仕方ないと言い訳する屑。
googlemapみたいにアジャックスつかって、見えてる部分だけデータを拾ってくるようにして、スク
ロールインした部分は随時データを拾ってくるようにすればいい。
これなら、画面上に見えてるコントロールの数はずっと少なく出来るし、レスポンスも工場する。
0763nobodyさん
2009/08/05(水) 01:14:20ID:???0764nobodyさん
2009/08/05(水) 01:27:35ID:???0765nobodyさん
2009/08/05(水) 01:41:38ID:???0767nobodyさん
2009/08/05(水) 01:49:29ID:???0768nobodyさん
2009/08/05(水) 02:01:41ID:???ASP.NET AJAXを使って実装した
ポストバックして一覧再描画してないって落ちじゃね?
0771nobodyさん
2009/08/05(水) 11:29:00ID:???Excel Services...
0772nobodyさん
2009/08/05(水) 13:09:46ID:???普通、OWC考えないか?
0773nobodyさん
2009/08/05(水) 21:03:42ID:???つ jqGrid(JQuery Grid Plugin)
つ UltraWebGrid(NetAdvantage)
0775nobodyさん
2009/08/06(木) 01:01:32ID:???って書いてなければ、勝手にそんな機能を実装してるわけで要件は変わってる
0776762
2009/08/06(木) 01:16:17ID:???0777nobodyさん
2009/08/06(木) 01:23:02ID:???まあそれはおいといて早く作って見せてくれよ。
実装イメージでもいいぞ。
0778nobodyさん
2009/08/06(木) 01:34:52ID:???>>757は
「詳細設計から参加だから、もうどうしようもなかった。」って記述してるんだから、
すでに詳細設計書が存在してるわけで、この場合の「要件」とは、
その詳細設計書を実現するのに必要な条件のことでしょうよ。
>よう‐けん〔エウ‐〕【要件】
>1 大切な用事。「―のみ記す」
>2 必要な条件。「教育者としての―を満たす」
0779nobodyさん
2009/08/06(木) 01:47:15ID:???仮に出来たとしても、cssで非表示させてるだけならhtmlのファイルサイズの削減にはならないから軽くならないし、
ポストするデータサイズも同じだし、むしろスクロールする度にJavaScriptのイベントが発生するから、
ベタに表示させるより重くなるんじゃね?
ASP.NET AJAXでスクロールするたびに動的にコントロールを生成するのなら、
初期に表示されるコントロールが少ないからhtmlのファイルサイズの削減にはなるけど、
スクロールさせるたびにサーバに問合わせてコントロールを表示させてデータを表示させるなんて、
物凄く遅くなるんでないかな。
さらにデータが変更されたテキストボックスが表示エリアから消えた場合、
それを復元する術がないから、非表示になったテキストボックスのデータも
いちいちサーバにポストバックして保存しないといけない。
そんなことするなら、ベタに5万個のテキストボックスを表示させたほうが軽くないか?
0780nobodyさん
2009/08/06(木) 02:03:42ID:???お前にも作れるよ。
0781nobodyさん
2009/08/06(木) 02:16:18ID:???0782nobodyさん
2009/08/06(木) 02:21:31ID:???0783nobodyさん
2009/08/06(木) 02:30:15ID:???遅くなる理由が見つからない。
0784nobodyさん
2009/08/06(木) 02:31:02ID:???どのコントロールが表示状態になったかは取得できないな
従って、絵に描いた餅
Flashかsilverlightなら可能だと思うが
0786nobodyさん
2009/08/06(木) 02:43:39ID:???1つのページに複数のページが表示されるのは機能的に問題
データはいつ削除されるか追加されるかわからないんだから、
最悪の場合、50ページすべての行に同じデータが表示される可能性がある
そして後からデータが追加されて51ページ目が発生した場合にも対応できない。
0787nobodyさん
2009/08/06(木) 05:47:17ID:???後はAJAXなりで適当にスクロールしてるように見せかければいい
>>786
そういったことを防ぐために排他制御って考え方があるんだが
機能的に問題かどうかは、ロックがどうなってるかによる
普通のWEBアプリに見られるような楽観的ロックなら問題かもしれないが
適切なロックがあれば問題ない
そう考えると元の設計は、もしかするとロックするから
全項目を1画面に表示したいのかも知れない...と思ってみたがたぶん違うなw
0788nobodyさん
2009/08/06(木) 08:19:08ID:???まずはセッションとかでどうにかならないか考えるだろ。
あと数を絞れば速くなるに決まってるなんて言ってるのがいるが、
ホントに試してみたのかい?
0789nobodyさん
2009/08/06(木) 08:21:18ID:???実は最初から全部読んだ方がスムーズだったなんてことはないのか。
0791nobodyさん
2009/08/06(木) 13:11:14ID:???配置して、画面上には常に固定のコントロールを配置。
で、スクーロル下をボタンをクリックしたら
txtbox2の内容をtxtbox1に
txtbox3の内容をtxtbox2に
txtbox4の内容をtxtbox3に
txtbox5には新規にDBから取得した内容を新規にセット
ってやれば、画面上には常に一定数のコントロールしか表示されないし、PostBackerの処理
も簡単で一石二鳥じゃね?
0792nobodyさん
2009/08/06(木) 14:01:14ID:???突っ込まれると思ったw
詳細設計時に存在するには内部設計書だな。すまんかった。
つーかいちいちプログラムと関係ないところのツッコミしかできないのかよ?
吐いた唾を飲み込むの?死ぬの?
唾飲み込むぐらいじゃしなねーけどwww
0793nobodyさん
2009/08/06(木) 14:14:19ID:???Webアプリで1画面表示する間、ずっとデータベースをロックしろとでも?
この場合、いつ最下部のページを表示する画面にスクロールかわからないから、
ページをみてる間はずっとロックかけてる必要がでてくるわけだが。
他人が使う可能性や、ブラウザのページの切り替わりの
可能性なんて考えたら、そんなロックは実用上不可能だろ。
結局、重複させない、または表示途中で削除されたデータに対応するには
クライアント側(ポストバックかクッキー)かサーバ(セッション)でデータを持ち続け、
最終的に楽観的ロックで確認するしかない。
>>791
2万行あったら最下部までたどり付くのに2万回クリックすんの?ww
そうなると100行単位とかのページ単位で切り替わるほうがいいんじゃね?
それでも200回クリックじゃつらいから、10ページ前に戻る、10ページ後に進む的な
ページングのボタンを設置したほうがいいんじゃね?
そうなると>>768で答えは既にでてる。
Ajax、XBAP、Silverlight、Flashなんでもいいから
ユーザビリティーの良いのに作り直す事だね。
0795nobodyさん
2009/08/06(木) 15:40:39ID:???ああ、読んでるよ。
設計書通りに作ったんだろ。
設計書見た段階でこりゃ動かんわってわかってたんなら
その段階で何かするべきなんだよ。
ちゃんとせんから余計な後戻りが発生するんだ。
0797nobodyさん
2009/08/06(木) 18:04:19ID:???0798nobodyさん
2009/08/06(木) 18:57:51ID:???scrollTopかscrollYかpageYOffsetを調べれば可視がどうかぐらいすぐわかるだろ?
>>789
onscrollにいちいちまじめに反応せずに1秒後に更新すれば解決だな。
おまいらJavaScript舐めてんの?
0799nobodyさん
2009/08/06(木) 19:09:02ID:???ゆっくりスクロールしたときどうするんだよ、使いもんにならん。
ユーザーの使い勝手が元々求められてることだろう?
0800nobodyさん
2009/08/06(木) 19:20:56ID:???とにかく元々言いたかったことは、そんな簡単にできるようなことじゃなくて
かなりいろいろ考えなきゃまともに作ることなんて出来ないってことだ。
最終的にホントにまともなものが出来るかも怪しい。
作りがしょぼいだけなんて簡単な話じゃない。
0801nobodyさん
2009/08/06(木) 20:38:13ID:???リピーターコントロールの中にComboBoxが入っていて、ComboBoxのアイテムの中身はDataSetに入っています。
このComboBoxとDataSetを紐付けたいんですが、ItemDataBoundの中で一々
FindContorol→DataSource設定→Baind()
ってしないと駄目ですか?
ObjectDataSourceコントロールとかうまく使ってこの辺をノンコーディングで実装できたりしませんか?
0802nobodyさん
2009/08/06(木) 20:48:15ID:???Repeater、入れ子(またはネスト)で、Repeaterコントロールに
DataSource(DataSet)を動的にバインドする方法がわかるから、
それと同じ方法で実装すれば可能だと思うよ
0803nobodyさん
2009/08/06(木) 20:50:04ID:???×Repeater、入れ子(またはネスト)でググると
0804nobodyさん
2009/08/06(木) 20:52:18ID:???0805nobodyさん
2009/08/06(木) 21:27:58ID:???無理
コントロールのサイズがどの環境でも一定じゃないから、
スクロール量と画面の高さと、現在表示されてるコントロールの数に相関関係がない。
cssを無効化せず表示の拡大・縮小機能を使わないなら可能かもしれないが。
さらに一番最初にその画面を表示させた時点で高さ(スクロール量の最大値)が決定してしまうから、
表示中にデータが追加された場合、一番下にスクロールしても非表示のデータが発生してしまうし、
条件によっては同じデータが複数表示される可能性は排除できない。
ページ分けでも同様の問題は発生するが、同じページに同一データが複数回表示されてしまうのは
運用上、絶対にまずい。
もっと言えば、スクロールするたびにAjax等でhtmlとデータを取得していたのでは、
そのつどオーバーヘッドが発生するので、画面の最も下の行を閲覧しようと思った場合、
前ページを表示するより遙かに重くなる。
0806nobodyさん
2009/08/06(木) 21:56:28ID:???コントロールのサイズぐらい取得しろよ。できないならdivで囲んでdivのサイズ調べろ。
さらに運用上まずいならサーバーセッションでキャッシュしろよ。
もっと言えば1秒後って意味が理解できなかったみたいだね。よくかんがえてみよう!
0807nobodyさん
2009/08/06(木) 22:26:34ID:???つかえねぇw
0808nobodyさん
2009/08/06(木) 22:55:43ID:???>コントロールのサイズぐらい取得しろよ。できないならdivで囲んでdivのサイズ調べろ。
無理
やってみなよ
拡大縮小かけても正常な値は取得できない@IE8
0809nobodyさん
2009/08/06(木) 22:57:44ID:???だからさっさと見本を見せりゃいいんだよ。
できないのは技術力がなくて作りがしょぼいだけってんだから
当然それなりのもんができるんだろ?
絶対まともなもんなんてできないだろうけどな。
0811nobodyさん
2009/08/06(木) 23:27:53ID:???0812nobodyさん
2009/08/06(木) 23:35:19ID:???お前が他の100人を全員アホだという
どっちがアホかな?
0813nobodyさん
2009/08/06(木) 23:58:07ID:???5万行を軽く表示できるからいらないっていうならそれでいいけど。
0814nobodyさん
2009/08/07(金) 00:03:08ID:???0815nobodyさん
2009/08/07(金) 01:33:58ID:???だれも言ってないよねw
できるんならやって見せてほしいだけ。
できないんなら簡単にできるみたいなでたらめ言ってんじゃない。
どうせ深く考えずに感覚だけでもの言ってんのが明らかだし無駄だけど。
なんともしらじらしくてうざいわ。
0816nobodyさん
2009/08/07(金) 02:06:49ID:???まともなの作って欲しいなら金出せって事だわ
夏休みの宿題なら手伝ってやってもいいがな
0818nobodyさん
2009/08/07(金) 09:43:38ID:???0819nobodyさん
2009/08/07(金) 10:09:15ID:???深く考えずに当然出来るだろうと感覚だけで言ってましたって素直にいって消えろ。
っても無駄だわな。
0820nobodyさん
2009/08/07(金) 10:11:02ID:???課題はなんだ?
0822nobodyさん
2009/08/07(金) 11:28:53ID:???あとは、JavaScriptで表示されてるコントロールを取得するところだ
こういうサンプル見て見識深めろや
http://trirand.com/jqgrid/jqgrid.html
0824nobodyさん
2009/08/07(金) 12:13:43ID:???バカかこいつは。
0825822
2009/08/07(金) 12:23:15ID:???あと、結局、編集してもスクロールして画面から消えると元に戻せないし、
それを実装するとなるとかな〜り面倒な感じだな
0826822
2009/08/07(金) 12:40:57ID:???5000行とかだと超時間かかるな・・
0827nobodyさん
2009/08/07(金) 13:20:42ID:???0828822
2009/08/07(金) 13:27:09ID:???jQueryのプラグインだよ
0830nobodyさん
2009/08/07(金) 14:10:17ID:???スクロールとデータのオンデマンドな取得をどのように実現してるのか聞いてるんだよ。
当然そういうやり方でスムーズな操作やスクロールを実現してるんだろ?
まさかページングなわけないんだよね?
0832822
2009/08/07(金) 14:24:02ID:???それならPCをサーバとして公開して動画を乗せようとおもったけど、
サーバとして公開するならIISで作ったの公開すればいいじゃんね(ノ∀`)アチャー
でも、公開したらおまいら鯖に悪さしそうだから、ちょっと方法を考え中(・∀・)ニヤニヤ
なんでそんなに偉そうなの?
自分で確かめろよ
0834nobodyさん
2009/08/07(金) 15:03:33ID:???例:アドオン利用しない前提なのにアドオン紹介したら単なるキチガイ
0835nobodyさん
2009/08/07(金) 15:05:43ID:???高圧的、傲慢的に指摘する奴ほど、過去レス読んでなくて支離滅裂
0836822
2009/08/07(金) 15:52:09ID:???http://sharedfile.jp/r/s9jkk0jNi8Oiqh81/
10回しかダウンロードできないので、できなかったらまた言ってください
0837nobodyさん
2009/08/07(金) 20:51:05ID:???どう見てもページングです。
本当にありがとうございました。
0838nobodyさん
2009/08/07(金) 21:01:51ID:???0839nobodyさん
2009/08/07(金) 21:07:33ID:???数千件だと鬼のように遅いから無理
最初の表示は遅いけど、最初に表示させたほうがよっぽどはやいみたいね
0840nobodyさん
2009/08/07(金) 22:15:07ID:???>>779
>>782
>>788
>>789
>>805
みんなはじめっからそれ遅くなるんじゃねーのっていってるな。
>>783
たまにこんなのもいるけどなw
0841nobodyさん
2009/08/07(金) 22:22:20ID:???0842nobodyさん
2009/08/07(金) 22:36:54ID:???0843nobodyさん
2009/08/07(金) 23:11:59ID:???まあそうそう簡単にまともに出来るもんじゃないわな仕組み的に考えて。
0844nobodyさん
2009/08/07(金) 23:19:00ID:???俺はできないし実例も見つからないけど。
こんなとこですか?
0845nobodyさん
2009/08/07(金) 23:26:08ID:???データの読み込みを非同期にしてひたすら追加していく
って辺りが現実的かな。
結局最後まで表示できるまでに時間はかかるしデータ量の限度も低めになるだろうけど。
操作に合わせて取得ってやり方では絶対無理だと思う。
操作にラグがあって操作感が悪いってのを避けようとするとね。
0846nobodyさん
2009/08/07(金) 23:27:28ID:???データの挿入に伴うセル幅の再計算とテーブル全体の再レンダリングに時間がかかっているように見えるけど
もっと別のところで時間がかかっているの?
いきなり50000行のテーブルを作るのは50000個のコントロールを置くのとくらべて
ほとんど進化していないような気がしますが。
0847nobodyさん
2009/08/07(金) 23:41:38ID:???必要なところだけ作成するやり方でうまくできれば相当速くはなるだろう。
ただし、結局スクロール(操作)と表示のタイムラグのせいで、
データ表示には向かない(操作感が悪い、使い勝手が悪い)感じになるだろう。
普通に表示した方がまし、って感じに。
さらに一度読んだ部分はクライアントに残しとく感じなら操作感も良くはなるかな。
しかし最初のスクロールは遅いままだから、結局単にデータは非同期にするだけで
一気に全部読んでしまう(サーバへの要求は分割する感じ)のがましかな。
>データの挿入に伴うセル幅の再計算とテーブル全体の再レンダリングに時間がかかっているように見えるけど
>もっと別のところで時間がかかっているの?
いやTextBoxを画面の表示範囲の部分だけ表示させる処理をし、そこにデータを表示させてるだけ。
具体的にはTextBox1.Visible=true;TextBox1.Text="ぬるぽ";をしているだけ。
この条件は一番最後のリンクの5000行の全件表示と同じだけど、
ajaxでその都度書き換えるより、全件表示の初期処理のほうが遙かに早いから
これをもってレンダリングに時間がかかってるようにみえるという意見に反証できると思う。
>いきなり50000行のテーブルを作るのは50000個のコントロールを置くのとくらべて
>ほとんど進化していないような気がしますが。
物理的に何かしらの高さを設定できないと、スクロールバーが表示すべきコントロールの高さで設定できないから、便宜的にTableを設定してる。
それにデザインの観点から表示されるデータがテーブルで囲まれてるのは普通だし、
これを進化していないと捉えるのは筋違いだと思うけど。
どう?
データの行数に従って、<div>で高さを設定して行数に応じたスクロールバーを表示させるようにして、
画面の高さに応じた行数にぴったり合うサイズのテーブルを動的に生成し、
そのデーブルをスタイルシートでブラウザの表示範囲の絶対指定で位置を固定する?
スクロールしても動かないBackGroundImageみたいにw
それだとページングがスクロールバーになっただけのページングと同じだし、
スタイルシートが無効にされたブラウザだと無理だから現実的じゃない気がする。
0850nobodyさん
2009/08/07(金) 23:55:31ID:???0852nobodyさん
2009/08/08(土) 00:17:29ID:???データ挿入するたびにセルの横幅だけじゃなく縦幅も伸びてるよ。
一番最後の例もjavascriptで表示してるの?
サーバー側で作ってるんじゃないの?
>>849
スタイルシート使えないって条件なら確かに難しいかもね。
0853nobodyさん
2009/08/08(土) 00:28:39ID:???そういう意味ではなく、レンダリング全体として考えた場合。
一番最後の例はサーバ側で作ってるけど、リンクをクリックしてから表示されるまで、
何もないところから表をレンダリングしてるわけで、レンダリングする時間がそこに含まれてる。
5000件の動的生成のページも、スクロールをトリガーにイベントが発生し、
データを取得してページをレンダリングしてるわけで、レンダリングする時間がそこに含まれてる。
どちらも5000件のデータをレンダリングをする時間が含まれてるのに、
一番最後の全件表示のほうが、動的生成より時間が圧倒的に短いから、
レンダリング以外の部分で時間が掛かってるんじゃないの?という推測をしているという話。
0854nobodyさん
2009/08/08(土) 00:32:24ID:???>スタイルシート使えないって条件なら確かに難しいかもね。
というか、スクロールバーがページング機能を果たしているだけだから、
それだったら、普通にページング機能を実装したRepeaterコントロールで実装すれば?と俺は思うね。
だって結局は、縦に5000件あるデータの一部分をくり抜いて、それを画面に表示しているだけなんだから、
ページング機能を実装したリピーターと同じでしょ。
それが、<< < 1 2 3 4 5 6 > >>になってるだけという話で。
0855nobodyさん
2009/08/08(土) 00:34:54ID:???推測だけじゃなくて実際にテーブル使うのやめてみなよ。
行番号と<br>だけでいいだろ。
>>854
それでいいと思うよ。
0856nobodyさん
2009/08/08(土) 00:55:01ID:???推測っていうか、表の横が伸びてるとか縦が伸びてるとかいうけど
もとあるテーブルを伸縮してるわけじゃなくて、
AJAXではinnerHTMLでhtlmをゼロから描画してるわけだから、条件は一緒だと思うけど。
>推測だけじゃなくて実際にテーブル使うのやめてみなよ。
第三者だけど俺は実際に試して実証に参加したので、
次はあなたにおまかせします。 (つ∀-)オヤスミー
0857nobodyさん
2009/08/08(土) 01:01:48ID:???それには気づかなかった。すまんw
0858nobodyさん
2009/08/08(土) 14:35:07ID:???いまさらに調べてみたんだけど、
Tableの描画にRepeaterを使っているんだけど、
Repeaterだと、Repeater内のhtmlがごそっとhtmlで送られてきて描画してるみたい
だから結局、ページを最初から描画するのと変わらないからレスポンスも
めちゃくちゃ遅くなってるみたい。
なんでRepeaterを使わずに、動的にPanelか何かにテーブルを作成しておいて、
あらかじめTextBoxを描画しておいて、そのTextBoxのみに対して
変更を加えれば描画が劇的に早くなるかもしれない。
ただ、それだと最初にページが表示されるのに必要なhtmlの容量が
全件表示させるのとほとんど同じになるからあまり意味がないような気もするけど。
結局、httpdのレスポンスがそんなに早いものじゃないから、
きびきびしたレスポンスじゃなくて、そのぶんを考えると、そんなに気持ちいいもんじゃないかもしれない。
時間が出来たので、ちょっと試してみる。
0859nobodyさん
2009/08/08(土) 14:54:42ID:Gb5bXhyn何でもかんでもwebでやろうと考える奴は氏ねばいいのに。
0860nobodyさん
2009/08/08(土) 16:24:21ID:???0861nobodyさん
2009/08/08(土) 17:20:58ID:???0862nobodyさん
2009/08/08(土) 17:58:51ID:???全部Webになってもおかしくないかも
0863nobodyさん
2009/08/09(日) 01:47:50ID:???勉強してみようかな。
0864nobodyさん
2009/08/09(日) 02:52:01ID:???今のところまだ微妙
基本的にはFlashと同じだけど、リッチクライアントとしては面白いかも
ポストバック無しで複雑な入力チェックとか、合計値の計算とかをScliptなしでできたり、
グラフなどを書いたりできるので、軽いアプリみたいな感じで利用できるし
でも中身は.NETとC#(CLR)だから、C#知ってれば問題ないんじゃないかな
C#ひとつでWinForm、ASP.NET、Silverlight、WPF、XNAとかできちゃうから
C#けっこうお勧めかも
0865nobodyさん
2009/08/09(日) 07:24:33ID:???0866nobodyさん
2009/08/09(日) 10:43:22ID:???使えるようになるから、もうちょっと待て。
というか、最近の.NETは全部そっち系の開発者を取り込むための拡張
ばかりでヤレヤレな感じ。
0867nobodyさん
2009/08/09(日) 19:49:52ID:???Silverlightは別途手動インストールってのがな。。
WindowsXPでも.netアプリ作ろうとしたら、ランタイムを別途インストール
しなければならないってだけでポシャッったからな
過渡期はいろいろ難しい。
0868nobodyさん
2009/08/09(日) 20:25:20ID:???0869nobodyさん
2009/08/09(日) 20:40:26ID:???MicrosoftUpdateで配布じゃなかったっけ
それにFlashと同じようにプラグインだからインストールは簡単
0870nobodyさん
2009/08/10(月) 18:30:50ID:???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機構でコネクションが閉じられて自動ロールバックされるって認識でいいですか?
0871nobodyさん
2009/08/10(月) 18:51:43ID:???MSDNライブラリでは明示的にロールバックしてるけど。
0872nobodyさん
2009/08/11(火) 00:47:44ID:???ロールバックを記述すべきだと思う。
あと、余計なお世話かもしれないけど、
using( )
{
using( )
{
は
using( )
using( )
{
って書けるよ
0873nobodyさん
2009/08/11(火) 02:27:56ID:???0874nobodyさん
2009/08/11(火) 13:10:19ID:r4b1PC39リリースコンパイルのようなものは存在しなかったりしますか?
0875nobodyさん
2009/08/11(火) 14:40:02ID:???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 )
{
// ログ取得かなんか
}
ネスト深くなるな・・
0876nobodyさん
2009/08/11(火) 18:21:35ID:PKpaKHktで出したり入れたりしています。よくあるパターンに従ってます。
特に凝った事はしていません。Sessionのキーは次画面urlです。
で、ふと思ったんですがキーをurlにしてると、異なる画面に遷移する度に
Sessionオブジェクトを作り散らかしてますよね?不要になったタイミング
でSession.Removeしてやればいいような気がするんですが、そのような例
を全く見かけません。
LoadPageStateFromPersistenceMediumの中で、SessionからViewstateを取
り出したら早々にSession.Remove(キー)を行うのは何か問題がありますで
しょうか?
0877nobodyさん
2009/08/11(火) 21:02:34ID:???特にリソースを消費しない限りRemoveせずそのままにしておいて、
自動的にセッションが切れるのを待つようにしてる。
0878nobodyさん
2009/08/12(水) 03:00:28ID:???MSの中の偉い人が新しいプロトコル設計して広めてくんないかな。
0879nobodyさん
2009/08/12(水) 03:45:27ID:???OSI参照モデルのトランスポート層の上に成り立ってる技術なんだから
httpだけ新しいプロトコルなんてわけにゃいかないでしょうよ
極論でいえばtelnet叩いてサーバと通信する以上のことはできないんだから
0880nobodyさん
2009/08/12(水) 15:22:15ID:???下位の層の上に成り立ってるからこそ、上位に新しいプロトコルを作れるんじゃないか
いまさらTCP/IPに代わるもの開発するのか?
極論で言えば、任意のデータをやりとりできる以上、なんだってできる
オーバーヘッドの問題で早いか遅いかだけだ
0881nobodyさん
2009/08/12(水) 15:53:01ID:???その土台の上に成り立つ限りtcp/ipのオーパヘッドの解消にはならん
0882nobodyさん
2009/08/13(木) 20:32:47ID:???VB 2008 express editionを使ってWebアプリ作るのとどこが?どう?違うの?
もしかして同じ?VB 2008 express editionの方が軽い?
(VWD 2008 Express Edition重いんだよね?)
0883nobodyさん
2009/08/13(木) 20:45:37ID:???0884nobodyさん
2009/08/13(木) 22:53:45ID:???俺C#のやつで作ってたけど・・・
まぁデザイン構成は脳内でやるけどな
0885nobodyさん
2009/08/13(木) 23:04:39ID:???製品概要を調べてみてくれ
ちなみにVWDとC#Expressを同時にインストールしたときに、
ひょっとしたら同時に互いの機能が利用できるかもしれない
http://www.microsoft.com/japan/msdn/vstudio/2008/product/compare.aspx
0886nobodyさん
2009/08/13(木) 23:18:52ID:???aspxやascxは全て手打ち?でやってる
まぁデザインは決まってるんで俺ははめ込んでいくだけなんだけどな
0887nobodyさん
2009/08/14(金) 05:51:41ID:???VWD2008の新機能には興味あるんだけど、メチャ重そうなのでバージョンアップ躊躇してる。
Celeron M 1.5GHz メモリ512MB WinXPのノートでVWD2008大丈夫かなあ?やめた方がいいですか?
0888nobodyさん
2009/08/14(金) 07:58:52ID:???よく2005動いてたな。2008云々以前だわ。
0889nobodyさん
2009/08/14(金) 13:16:07ID:???そんなにスペック低いかなあ?このノート3年半ストレスなく使ってるけどなあ?
Word2007、Excel2007入れてるし、アプリもたくさん入れてるし、VWD2005も立ち上がり
には時間が掛かるけど、通常作業はストレスなく出来るよ。
VWD2008入れてみようかなあ?ダメならアンインストールするか。(少々怖いけど)
0890nobodyさん
2009/08/14(金) 14:36:00ID:???自分は2005と2008のproを両方いれてるけど
0891nobodyさん
2009/08/14(金) 15:47:08ID:???別にどっちもそんなにかわんないと思うけどね。
自分のノート(P8400)にもインストしてるけど、そもそもノートじゃやるきしない。
普段はデスクトップ(E7400とE8500)でやってるけど、まぁ普通に使える。
0892nobodyさん
2009/08/15(土) 04:36:50ID:???NECのモバイルノート(PenM753、RAM768MB、XPSP3)でVWD2008使ってたけど
>891が書いてるようにプロジェクト開く時の読み込みに時間かかるくらいで、そんなに重いとは思わなかったよ
0893nobodyさん
2009/08/16(日) 00:31:30ID:???CPUはまあ、少々重い程度で何とかなるけど、メモリは多くないと厳しい。
0894nobodyさん
2009/08/16(日) 03:54:10ID:???ノートで1G、デスクトップで2G積んでるからなぁ
いろんな意見あると思うけど、開発PCはなるべく高スペックでやったほうがいいと思うよ
もちろん実際に動作させてどうなのかは、低スペックPCを用意して実験したほうがいい
というのは当たり前として。
0895nobodyさん
2009/08/16(日) 14:47:05ID:???サブは大画面じゃなくてもいいから。(あまりに大画面だと逆に近くて見づらいが)
仕様書とかみながらだといちいち切り替えるのが面倒。
昔17インチのシングルディスプレイでやってたけど
今メインが24でサブが19だが、快適すぎて作業効率が段違いだわ。
でもこの辺上役が理解ないんだよなw
作業効率が上がるということはそれだけ仕事がはかどり、金も稼げるというのに
たった数万程度(2台のディスプレイ)の出費すら惜しむ。
その数万かけて上がる作業効率は、長期的に見れば数十万数百万、人によっては数千万にもなるというのに。
デザイナーにばかりハイスペックマシンや大型ディスプレイ用意する割に、PGには低スペックマシンと小さいディスプレイとかだと
そういう会社は分かってないというのが一目瞭然だわ。
ローカルだと仮想環境で自分のPCでテストサーバとか立てるし、CPUはデュアルコア3G↑
メモリ4G、グラボはまあ適当でいいがそれぐらいは欲しいな。
それでも10万あれば余裕だし、ディスプレイ入れても15万程度なんだからそれぐらいは先行投資しろよっていう愚痴。
0896nobodyさん
2009/08/16(日) 16:02:35ID:???大手はそうはいかんだろうが、中小の開発環境なんて社員の発言でどうとでもなるだろ。
俺は上司に言って最新スペックのPG、デュアルモニタで開発してる。
低スペックマシンで開発しろと言われたらそんな会社辞めれ。
0897nobodyさん
2009/08/16(日) 19:28:48ID:???1050とか1080とかは若干短い
ところが、いまじゃ16:9の液晶ばかりだ
氏ね
0898nobodyさん
2009/08/17(月) 10:28:03ID:???0899nobodyさん
2009/08/17(月) 17:58:49ID:???FormView_ItemInsertingでトランザクションを起こして
FormView_ItemInsertedでコミットするような流れにしたいのでが
FormViewで処理対象となるレコードを上記トランザクションに含める方法が
分かりません
0900nobodyさん
2009/08/17(月) 21:19:58ID:???TransactionScope?
http://msdn.microsoft.com/ja-jp/events/dd253124.aspx
0901nobodyさん
2009/08/18(火) 17:07:55ID:???そのFromViewのソースになってるSqlDataSource(かなにか)でトランザクションする
http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.sqldatasource.updating.aspx
0902nobodyさん
2009/08/18(火) 21:48:54ID:???逆じゃね。
大手ほど金あるからいいマシン使ってる傾向にある。
俺の知り合いにHPの社員いるが、ノートがデスク並みの化け物マシン。
カタログ渡されて、好きなスペック見積もって希望出せとか言われるらしい。
中小ほど意見を出しやすい環境にはあるが、環境だけで金がないから実際にマシンが用意されることはあまりない。
言って用意してくれる=上司が理解ある なんだし。
理解がなきゃいくら言っても無駄だよ。
俺なんて4年前の話だが、ペン2の450Mhz メモリ256MBで開発してたぞw
その時はJavaだったが、Eclipseの起動だけで5分〜かかる始末。
他にも何をするにも時間がかかる。
そしてとっとと辞めた。
今の環境でもそう良くはないけどな・・・
マシンスペックはそこそこだが、ディスプレイは中型程度のシングルだわ。
まぁスレチですね。
0903nobodyさん
2009/08/18(火) 22:39:53ID:Ptn4NZ4N>俺なんて4年前の話だが、ペン2の450Mhz メモリ256MBで開発してたぞw
そういう経済観念の社長って、育った家が個人商店やFCチェーンだろw
0904nobodyさん
2009/08/19(水) 02:43:11ID:???>>901
thx
確かに視点が違ってました。
SqlDataSourceのイベントでトランザクションをコントロールするんですね。
0905nobodyさん
2009/08/19(水) 20:09:59ID:???VIEWSTATEの内容を使って画面の入力状態を復元することは出来ないでしょうか?
つまり
A画面→B画面→A画面
と遷移して、Aに戻ってきたときに入力内容を復元させたいんですが、この時にVIEWSTATE
使えないかなぁ、と。
0906nobodyさん
2009/08/19(水) 20:45:51ID:???そもそも、そういう画面遷移がベストな動作かどうかから考える余地があると思うけど、
解決法はいくつかある。
普通に他のページにポストバックしたいなら、この方法を。
http://www.atmarkit.co.jp/fdotnet/dotnettips/406asppostback1/asppostback1.html
表示させたい画面によっては、別に他のaspxにしなくても、
表示されるフォームを入れ替えるだけで事足りる場合がある。
その場合はMultiViewを使えば同一ページ内で表示フォームをざっくり入れ替えることができる。
http://www.atmarkit.co.jp/fdotnet/dotnettips/399aspmultiview/aspmultiview.html
0907nobodyさん
2009/08/19(水) 21:11:12ID:???1つ目の例のほう、それだけ読むと
「BからAに遷移する際、PostBackURLを使って遷移するとBから戻ってきたAの最初のPage_Load
イベントは、IsPostBackがtrue(つまり非PostBackなPage_Loadは発生しない)」
と絶対期待するけど、実際には最初のPage_LoadはIsPostBackがfalseなんですが・・・
0908nobodyさん
2009/08/19(水) 21:17:53ID:???0909nobodyさん
2009/08/20(木) 11:52:59ID:tDv67O1u最初に「読み込み中」とだけ書かれたページを表示して、
そのページが一旦表示された直後に
本当の内容を読みに行って「読み込み中」と
書かれた部分を置き換えるという感じのページを作りたいんですが、
C#のコード側でこういう機能を実装するには
どんなふうにしたら良いのでしょうか?
ボタンなどの場合はClickイベントに追加すれば良いのですが、
ページの表示が完了したときに発生するようなイベントは見つけられませんでした。
JavaScriptのpageLoadに書けばできそうですが、
JavaScriptを手動で書くのは可能な限り避けたいです。。。
0912nobodyさん
2009/08/20(木) 15:54:40ID:???UpdateProgressとAlwaysVisibleControlExtenderで出来るでしょ。
後はてきとーにぐぐれ。
0913nobodyさん
2009/08/20(木) 18:34:47ID:???AJAX使えばできるんでないかな。
タイマーらしきものがあったはずだから。
もしくはSilverlightを使って読込が完了し次第、フォームを表示するとか。
javascript使ってよくて、ギミックとして「読込中」みたいな表示をしたいのなら、
読込中表示をして、htmlの最下層に何かのボタンをクリックするjavascript書いて
ポストバックさせて、次に読込中のところを本当に表示させたい内容と入れ替えるとか。
ajaxと組み合わせるとそれっぽくみえそう。
0914909
2009/08/22(土) 11:34:55ID:???ありがとうございます。
タイマーのインターバルを最小値にして
Tickイベントで更新するようにしたらいけました。
一番簡単にできそうだったので今回はタイマーを使いましたが、
JavaScriptやAJAX Extenderについてもこれから勉強したいと思います。
0915nobodyさん
2009/08/24(月) 02:32:07ID:cO0SRF/Bupdatepanel内のコントロールにフォーカスセットしたいのですが、どうすればいいのでしょうか?
0916nobodyさん
2009/08/24(月) 05:21:16ID:???このビデオ説明(日本語)の最後の方にUpdatePanelの外に設置したButtonから
http://www.microsoft.com/japan/seminar/msdn/webcast/bg/46.ajax.updatepanel/play.aspx
UpdatePanel内をコントロールする方法が説明されている。
UpdatePanelのプロパティのTriggersのControlIDにButton1をEventNameにClickを設定。
(はずしてたらスマソ)
0917nobodyさん
2009/08/24(月) 11:44:02ID:???Trace使って画面に出力してます?それとも詳細にファイルログ出してます?
自前でファイルに書いてます?それともEnterpriseLibrary使ってます?
それとも、Log4netとか?
個人的には、EnterpriseLibraryを使って、ファイルに出してますけれど、
メソッド名やコード行も出力するためにラップする必要がありますよね。
地道にやることも可能ですけれど、何かメジャーな方法というかサンプルありますかね?
この辺りは、設計論というか実装論とも絡んできますけれども‥‥
日本語で参考になるのは、赤間氏のWebアプリケーション開発技術大全の
3巻、ASP.NET応用編あたりでしょうか?
StackTraceとContextBoundObjectで自分で実装しるって書いてあります。
0918nobodyさん
2009/08/24(月) 14:40:57ID:???ASP.NETのソースコードなんて1画面がたかだか数百行、短いと数行ぐらいしか無いので
デバッグなんかほとんど必要すらないだろ。なんでそんなに出力したいんだ?
俺はデバッガでステップトレースして解決しなかったことなんて一度も無いので
デバッグ用のログ出力なんか全く必要とも思わないね。
アクセスとかユーザーのアクションに対してログを記録するって言うなら話は別だが。
0920nobodyさん
2009/08/24(月) 14:55:56ID:???え〜、でも、ビジネスロジックとかデータアクセスとかそれなりに巨大になりますし、
既に現在のWebアプリって規模はフォームアプリと変わらないですよね?
CMSの機能まで含んでいると、それなりに複雑だと思うのですが‥‥
>アクセスとかユーザーのアクションに対してログを記録するって言うなら話は別だが。
システムテストの時とか、上記の感じにもなりますし‥‥
0921nobodyさん
2009/08/24(月) 15:23:31ID:???> 既に現在のWebアプリって規模はフォームアプリと変わらないですよね?
うーむ。 まあ、それは理解できなくはないが、Outlook風のWebアプリを作った経験から言わせてもらえれば、
コンポーネントベースで部品をまず開発していくので、部品ごとのテストは出来るし、その部品を
組み合わせて作っていくので、テストしにくくなることもないし、ログ調べてまでデバッグしなければ
ならないということ自体があり得ない。
私がいま書いているASP.NETのプロジェクト、ソースコードにして10万行近くあるが、
ログを調べたいと思ったことは一度もないな。
最悪でも、stack traceをLabelにでも出力しとけばそれで事足りることがほとんどだし。
Webアプリでそんなに内部状態が違いに干渉しあうようなことってそうそう無いので
俺自身、どうしようもないバグに遭遇したこと自体が無いな…。
要するに誰もログ出力で困っちゃいないからスタンダードな方法が確立されてないんだと思うのだが。
0922nobodyさん
2009/08/24(月) 15:37:59ID:???自分で最初から作っていくなら、まさにその通りなんですけれど、
他社が作って、品質も不明なモノを解析して機能追加するときには、
やっぱり、ログ出力文をガンガン埋め込んでいくのが、一番早いと思うんです。
正直、英文コメントが少し書かれていたりするだけだと、そうするしかないかなと。
> 要するに誰もログ出力で困っちゃいないからスタンダードな方法が確立されてないんだと思うのだが。
1) 小規模開発ならログ出力が無くても困らない。
2) 数億単位の大規模開発なら、ほぼMSコンサルがプロポーザル段階から付いてるので、
そこがサンプルコードを提供して、フリーでは外に出てこない
って感じだと思います。
普通はEnterprise Libraryベースでイベントログに出すかんじですね。
CodePlex辺りに何かありそうな気がしてきました。
デバッガとページレベルトレースとアプリケーションレベルトレースで事足る
必要ならトレースリスナーをごにょごにょ
0924nobodyさん
2009/08/24(月) 16:54:22ID:???Formにぐだぐだ書くのはあまりよくない実装法でしょ。
ビジネスロジックは、再利用可能なように別クラスにすべきだし、
ソリューションごとに必要な共通な機能なら、
Pageの継承クラスにメソッドを準備して、静的クラスに委譲すればいい。
ページに書くのは初期処理や各種のイベントに対応した処理を行うときだが、
これも他のクラスに委譲させれば済む。
入力データも一つのクラスのプロパティとして保持しておいて集約で管理する。
その中には入力チェックや表示のための変換も用意しておけば、
再利用できて便利だし、Formとロジックが分離できるから見通しがいい。
別クラスにしておけば、各種テストツールが使えるし、
極端な話、asp.net上でテストする必要すらないから
WinFormで好きなログツール使って自由にデバッグすればいいだけの話。
>既に現在のWebアプリって規模はフォームアプリと変わらないですよね?
Formには表示に関して必要な処理と、イベント呼応に関する記述で、
そもそもフォームを意味するクラスに、うだうだ書くのは間違いだと思う。
0925915
2009/08/25(火) 01:19:06ID:???画面全体を更新しつつポストバックしたらUpdatePanel内のコントロールにフォーカスセットしたいのです。
この動画で言うと、最後の例でUpdatePanel内外のラベルコントロール両方が変わる感じでしょうか。
>>919
UpdatePanel内に配置したコマンドボタンでポストバックが発生したときにはそれで大丈夫なのですが、
UpdatePanel外のコマンドボタンでのポストバックだとフォーカスセットしてくれません。
もちろんcontrol.Focus()でもダメでした。
0926nobodyさん
2009/08/25(火) 01:51:52ID:???> やっぱり、ログ出力文をガンガン埋め込んでいくのが、一番早いと思うんです。
素人くさい方法だが、Console.WriteLineで出力して、デバッグウインドウへの出力を見るぐらいでは駄目なのか?
これで駄目なら、普通にsingletonのファイルへ書き出すクラスを用意して、そいつを呼び出すだとか。
どんなタイプのログ出力がしたいのかさっぱりわからないのだが。
逆に、こういうタイプのログを出力すると他社製のコンポーネントの理解が早く進むというのが
あれば教えて欲しいぐらいだが。
0927nobodyさん
2009/08/25(火) 09:34:42ID:???デバッグしたいんじゃないの?
0928nobodyさん
2009/08/25(火) 14:01:43ID:???今テストしたらフォーカスしたぞ?
<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);
0929925
2009/08/25(火) 22:51:11ID:???アドバイスくださった方々ごめんなさい&ありがとうございました。
0930nobodyさん
2009/08/26(水) 00:15:35ID:???ボタンのvisible,enableとかの画面制御、入力チェック、データベースへの入出力など
そのページに関する処理はすべてFormに記述されてて一つのaspxファイルで完結しているんですが
こういう実装はよくないんでしょうか?
Formとビジネスロジックを分けてる簡単なサンプルがあればいいんですが
0931nobodyさん
2009/08/26(水) 07:09:06ID:???プロジェクトの大きさや、内容、求められる開発効率によるから、良いか悪いかの判断は難しいかな
もし、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を○と表示するとか)するための処理が書いてあって、
それぞれ機能を継承させ、変更があったときに便利なようにしてる。
0932nobodyさん
2009/08/26(水) 07:14:27ID:???0933nobodyさん
2009/08/26(水) 13:17:43ID:???例外を一括してキャッチしてファイルログに書きだしてるんですけれど、
参照ライブラリの中の例外がApplication_Errorを通らないことが分かってきました。
イベントログにはID1309で上がってくるし、Web.configのCustomErrorでも出ます。
なので、死ぬほど困るっていうわけでは無いのですが、
出来ればコードのどこかで一括してキャッチ出来たらなぁと‥‥
どなたか、Application_Error以外で一括キャッチする方法ご存知の方いらっしゃいます?
0934nobodyさん
2009/08/26(水) 15:48:36ID:???MVCモデルを否定するわけではないが、それがすべてでもベストでもない
>構造的にMVCモデルをそのまま適用できなくて
そのまま機能分割なりしていって、MVCモデルになるわけないだろう
それははじめからMVCモデルにしようと思って機能分割してるからそうなるんだ
標準のASP.NETはMVCモデルとの相性は悪い
だからASP.NET MVCなどが登場したりしてるんだよ
0935nobodyさん
2009/08/26(水) 16:35:31ID:???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をなんとか別にできれば便利かなって漠然と思うと思うので、
やっぱ自然と近づいていくと思うけどなぁ
0936nobodyさん
2009/08/26(水) 20:13:41ID:???もしくは使い捨てレベルで共通機能化するか
TraceSourceをそのまま使うか、
まあ大抵そんなとこだろ。
ログ出力をConsoleやファイルに直で書くやつはそういない。
0937nobodyさん
2009/08/26(水) 22:37:23ID:???機能分割でも共通化でもいいんだが
ASP.NETに相性わるくて直接適用できないようなものを素人に勧めるなよ
0938nobodyさん
2009/08/26(水) 22:56:57ID:???>>931を良く読んで欲しいのだが、誰もMVCをやってみろなんて進めてないよ
MVCに近い形で実装してる自分の実装例を紹介はしてるけど。
共通化させようとすると、自然とMVCのような形に似てくると思う
↓
MVCとはこういう感じ(とリンク先を紹介)
↓
でもMVCはそのままASP.NETでは適用できない
↓
だから自分は、こんな感じで共通化、分離して再利用しやすいようにしてる。
以下、自分のやり方や分割の方法。
んなわけで、MVCを進めてるわけでも、自分のやり方を進めてるわけでもなく、
そんな考え方に至ると思うので、自分はこうしてると考えを紹介してるだけ。
0939nobodyさん
2009/08/26(水) 23:09:42ID:???0940nobodyさん
2009/08/26(水) 23:17:39ID:???俺は自然と近づくと思うし、それだけなら単なる見解の相違。
0941nobodyさん
2009/08/26(水) 23:49:04ID:???普通、なんかいいのないかって聞かれて、
非常に詳しく紹介し、自分なりの利用法も説明する
普通の感性ならお勧めされたと思うんじゃないか?
少なくとも俺にはあれはMVCをお勧めしてるように見えた
ASP.NETに相性わるくて直接適用できないようなものを素人に紹介するなよ
受け取った方はお勧めされてると勘違いするぞ
0942nobodyさん
2009/08/27(木) 00:10:44ID:???いちいち揚げ足取りや、言葉尻だけ捉えて意見を言われても困る。
↓こんな感じでも紹介しちゃったら駄目なの?
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を○と表示するとか)するための処理が書いてあって、
それぞれ機能を継承させ、変更があったときに便利なようにしてる。
0943nobodyさん
2009/08/27(木) 00:23:43ID:???責務の分担をさしたMVCは区別されていることに気づいてくれ。
君の言うMVCはn層データ構造と言い換えても大した差異は生まれない。
(元々n層データ構造自体がMS流のMVC解釈であるためというのもあるが)
例えば>>942をASP.NETの用語で言うならばaはコードビハインドであり、
bはDALであり、cはaspx, ないしコードビハインドだ。
0944nobodyさん
2009/08/27(木) 00:24:42ID:???MVCそのものを勧めたり、または勧める目的で紹介してるというわけでなく、
MVCのメリットを理解してもらうために紹介してるんだよ。
その上で、そのメリットを享受するために自分の実装例を紹介してる。
MVCそのものは、そのまま適用できないかもしれないが、
MVCのメリットを紹介するためにMVCを紹介するのは何もおかしくないでしょ。
0945nobodyさん
2009/08/27(木) 00:36:30ID:???だからだな、そのMVCのメリットをASP.NETに取り入れるとって話をしてるんだが。
>君の言うMVCはn層データ構造と言い換えても大した差異は生まれない。
>(元々n層データ構造自体がMS流のMVC解釈であるためというのもあるが)
>例えば>>942をASP.NETの用語で言うならばaはコードビハインドであり、
>bはDALであり、cはaspx, ないしコードビハインドだ。
つーか、ASP.NETの概念でMVCのメリットを記述した内容を説明しても意味ないと思うんだが。
データアクセスレイヤーだって、コードビハインドに記述できるから、それを言ってしまえば、
aもbもcも全部、コードビハインドでしょ。
そうじゃなくてコードビハインドで記述できる内容を、別クラスに定義するなどして、
いかに再利用や保守性などを高めるかっていうことの例としてMVCを例として出してるわけで。
0946nobodyさん
2009/08/27(木) 01:22:39ID:???勧めるなっていったら、勧めたんじゃない、紹介しただけだっていったのはお前だ
揚げ足とるってのはそういうことだ
これ以上向いてないモデルについて説明する必要ないだろう
0947nobodyさん
2009/08/27(木) 01:33:18ID:???0948nobodyさん
2009/08/27(木) 01:52:36ID:???何度も書いてるが、MVCのメリットを理解してもらうために、MVCを紹介して何が悪い?
初めからMVCの利点を理解してもらうために、リンク先を紹介してるのに、
MVCは合わない→MVCを勧めて意味あんのか→MVCを紹介して意味あんのかって
変遷してるのは自分のほうじゃない。
しかも言葉尻捉えて他人を批判してるから、揚げ足とるようなことはするなっていってるわけで。
何度もいうが、MVCを紹介(正確にはリンク先を紹介)して何が悪いんだ?
>共通化させようとすると、自然とMVCのような形に似てくると思う
>↓
>MVCとはこういう感じ(とリンク先を紹介)
>↓
>でもMVCはそのままASP.NETでは適用できない
>↓
>だから自分は、こんな感じで共通化、分離して再利用しやすいようにしてる。
>以下、自分のやり方や分割の方法。
0949nobodyさん
2009/08/27(木) 02:03:38ID:???引き返せなくなって難癖つけてる
0950nobodyさん
2009/08/27(木) 02:09:37ID:???>>↓
>>MVCとはこういう感じ(とリンク先を紹介)
水晶を買って以来、幸運が続いててさ。彼女はできるわ(ry
ところでこの店で売ってるのが件の水晶なんだ。
0951nobodyさん
2009/08/27(木) 02:21:58ID:???>>↓
>>MVCとはこういう感じ(とリンク先を紹介)
>>↓
>>でもMVCはそのままASP.NETでは適用できない
水晶を買って以来、幸運が続いててさ。彼女はできるわ(ry
ところでこの店で売ってるのが件の水晶なんだ。
でもそれは意味ないんだ。
0952nobodyさん
2009/08/27(木) 08:50:09ID:???0953nobodyさん
2009/08/27(木) 09:04:10ID:???MVCフレームワークを使わずにASP.NETで開発してるときってさ、
このMVCのVだけ別の会社向けに変更したいとき、みんなどうしてる?
つまり、A社にASP.NETで作ったシステム納品したんだよ。
それと同じでデザインだけ変更したシステムをB社にも納品したいんだよ。
そのためには、Vだけ差し替えなくてはならない。
でも中身は一緒なので、なるべくソースコード、プロジェクトは一本化しておきたい。
ASP.NETの .aspxって、VとCがくっいてて、分離できないのよね。
みんなどうやって解決してるの?
私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
差し変わるようにしたけど、こんな原始的な方法しかないのかな?
0954nobodyさん
2009/08/27(木) 09:23:14ID:???そんな事態があるわけ無い。
デザインが異なれば機能も異なるし、ガワだけ変えて済む問題じゃない。
普通は三層モデルで、ビジネスレイヤーとデータアクセスレイヤーを
別のクラスライブラリプロジェクトで作っておく。
1つのソリューションの中に以下の感じで。
CompA.Web <- Webプロジェクト
CompA.Business <- クラスライブラリプロジェクト
CompA.DataProvider <- クラスライブラリプロジェクト
CompA.Tests <- テストプロジェクト
もし、本当に>>953の言う通りなら、Webプロジェクト以外は同じ
0955nobodyさん
2009/08/27(木) 09:44:26ID:???> デザインが異なれば機能も異なるし、ガワだけ変えて済む問題じゃない。
いや、本当にガワだけなんだ。
ショッピングサイトとか、デザインだけ変えて納品したいんだ。
> もし、本当に>>953の言う通りなら、Webプロジェクト以外は同じ
だからそのWebプロジェクトに、顧客Aと顧客Bへの納品物で
共通部分があるのが嫌なんだ。
だから、
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
こうやっている。これが意外と現実的な解決方法だったりする。
0956nobodyさん
2009/08/27(木) 09:58:35ID:???0958nobodyさん
2009/08/27(木) 10:23:53ID:???grid_viewみたいなのを使わないページなら、
テンプレートエンジン使うとか。
0959nobodyさん
2009/08/27(木) 10:38:25ID:???B社にソース納品したとき
「これ他にも流用してるんじゃね?」と勘ぐられたくなければ
面倒でも、「御社専用のコードです」って見える風に手間かけるしかないと思うけど
あと、asp.net は継承って上手くできなかったっけ?
真に共通部分だけでベースクラスつくって、差分は継承後のクラスで書く、とか
Windows フォームなら、バンバン継承して作っちゃってるけど
0960nobodyさん
2009/08/27(木) 10:38:33ID:???文字列は、Webデザイナーが変更するんだ。パラメータにすると、そのパラメータが
どこに格納されていて、どこに表示されるかWebデザイナーに説明するのに余計な手間がかかるんだ。
WebデザイナーはDreamWeaverか、Expression Web2で編集を行なう。
この編集が直観的な出来ないような改造はしたくない。
またパラメータだと、それが正しい場所に埋め込まれて、きちんとDIVのボックス内に収まるか、実際にレンダリング
してみないとわからないし、Webデザイナー側で文字列を好きな位置に増やしたり出来ない。
だから、パラメータ化するのは、かなりのデメリットがあって、それなら↓こっちのほうが
はるかにいい解決方法なんだ。
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
0961nobodyさん
2009/08/27(木) 10:43:49ID:???> B社にソース納品したとき
> 「これ他にも流用してるんじゃね?」と勘ぐられたくなければ
いや具体的に言うとショッピングサイトで、各会社ごとにデザインだけカスタマイズしての納品なんだ。
だから、流用も何も、デザインだけカスタマイズしての納品ということは納品先のすべての会社に了解してもらい、
納得してもらっているんだ。
> あと、asp.net は継承って上手くできなかったっけ?
あなたが、どういうコードを想定しているのかちょっとわからない。
Windowsフォームの場合でも、別の会社に納品するときに
デザインを変更したいことってあると思うのだが、そういうとき、継承で解決するの?
0962nobodyさん
2009/08/27(木) 10:48:38ID:???普通のhtmlページで、たとえばデータベースからのデータで文字が置き換わるだけのようなページだったら、
デザイナにhtmlファイルで作ってもらって、置き換わる部分だけ$name$とかにしとくあれだよ。
0963953
2009/08/27(木) 11:49:09ID:???> デザイナにhtmlファイルで作ってもらって、置き換わる部分だけ$name$とかにしとくあれだよ。
$name$ とかに変更したあとのファイルをデザイナーにまたいじってもらおうと思ったときに
デザイナーが最初に作っていたhtmlファイルとは違うので、デザイナーがその構造を理解するのに
余計な時間がかかる。
あと、DreamWeaverでもExpressionWeb2でも直接.aspxを編集して、Web.UIのControlを含めて
正確にレンダリングできるのでWebデザイナーにレポジトリのaspxを直接編集して欲しいんだ。
そんなわけで、結局、↓こっちのほうが優れたやり方だと感じるんだが。
> 私は、バッチファイルで、A社とB社とで、.aspx (.designer.aspxではないほう) が
> 差し変わるようにしたけど、こんな原始的な方法しかないのかな?
0964nobodyさん
2009/08/27(木) 12:25:30ID:???あと、htmlファイルはいじらないでそのまま使うんだよ?
0965953
2009/08/27(木) 12:53:42ID:???ん? いじらないの?
ひょっとして、smartyみたいな独自タグ用意して、htmlを書いてそれをaspx側用に置換して使うって話?
あなたの言っていることとは違うのかも知れないが、
htmlを書いてaspxに変換するのは面白いかも知れん。
html → aspx と designer.aspx を自動生成できるように簡単なコンパイラみたいなのを作っておいて、
こいつに対して、View("Label1").Text = "12345"; のように viewとしてアクセスできるような仕組みが
あれば、(MVCフレームワークのように) viewだけ差し替えるなんてことも出来るかも知れん。
postback処理とかある程度自前で書かないといけないのが、アレなんだが…。
こういうフレームワークは勉強のために作ってみたいと思っていたので、いいかも知れん。
そういうのを世の中ではテンプレートエンジンと言うのだが・・・
0967nobodyさん
2009/08/27(木) 13:32:10ID:???http://blogs.msdn.com/webdevtools/archive/2009/01/29/t4-templates-a-quick-start-guide-for-asp-net-mvc-developers.aspx
0968nobodyさん
2009/08/27(木) 18:08:02ID:???サーバコントロールの名前だけ変えないでねって感じで
ぺろぺろっとhtmlだけ置き換えたいならASP.NET MVCのほうがいいかもな
0969nobodyさん
2009/08/28(金) 15:26:00ID:???Visual Web Developer 2008 Express Editionで、.NETじゃない旧来のASPて開発可能?
ttp://www.microsoft.com/japan/msdn/vstudio/express/
すれ違いだったらスマソ。。
0970nobodyさん
2009/08/28(金) 16:26:52ID:???Expressでやったことは無い(当方Pro)が、一応できるよ
インテリセンスもそれなりに利くし、IDEでデザインも弄れる
0971nobodyさん
2009/09/01(火) 12:03:04ID:FS0m+muwしかしWebで情報をあさると、C#のサンプルばかりで、VBのよさげなページがみつかりません。
あるいは、2002ごろの古いページとか。
MS初心者にむけた、ASP.NET+VBのよいページがあればおしえてください。
なお当方JavaとPHPでのWebプログラミング経験は結構あります。
SharpDevelopのC#→VB.NET変換機能使うとかどうよ?
オンラインでも変換ツールは色々あるよ
0974nobodyさん
2009/09/01(火) 12:45:26ID:???ASP.NET + VB で、ページの途中で処理を終えるにはどうしたらいいでしょうか。
PHPでいうと
<?php
if (条件) {
echo "<p>ERROR</p>";
exit();
}
?>
というコードに相当することをしたいです。
今は
<%
If 条件 Then
Response.Write("<p>ERROR</p>")
Else
:
:
End If
%>
とやっていて、これでも動作はするんですけど、できればPHPのexit()相当のことができると
もっときれいにかけるのにと思って質問しました。
Response.End()かな
0976974
2009/09/01(火) 16:06:48ID:???いえ、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
・・・
%>
のように書きたいということなんですけど、難しいでしょうか。
0977nobodyさん
2009/09/01(火) 17:15:00ID:???一回しか実行しないDoループでエラー処理後 exit doするとかw
0978nobodyさん
2009/09/01(火) 17:48:22ID:???Response.End以降の処理は実行されないぞ
ホントにそこで停止する。それ以降のhtmlすら出力しやしねえw
もし実行されてるなら、例外拾ってなんかしてないか?
ただ俺はPHPしらないが、PHPのexit()ってそのソース見てる範囲では
単にスクリプトブロックを抜けるだけの命令じゃないのか?
ホントにそこで処理を止めたら、bodyタグとかhtmタグlとか閉じてないhtmlソースになるだろ
PHPからの転校って、PHPのソース移植するのでなければ
もうちょっとASP.NET流に作った方がいいんじゃね
表示したいとこにラベルなりテキストボックスなり配置して、
コードビハインド側で関数作って値セットするとかすれば?
0979nobodyさん
2009/09/01(火) 19:51:23ID:???<%%>内にプログラムを記述するようなhtmlへの実行時バインドするのはやめたほうがいいな
Errorの表示をしたいのなら、Labelコントロールを配置してコードビハインドで、
そのLabelにエラーであることを示す文章を表示すべき
もちろん、そうすることで別のメリットがあるのなら話は別だけど。
0981nobodyさん
2009/09/01(火) 20:07:16ID:???【質問】ASP.NETスレ Part6【雑談】
http://pc11.2ch.net/test/read.cgi/php/1251803164/l50
0982974
2009/09/02(水) 21:43:56ID:???一回しか実行しないDoループを使う方法は良さそうですね。
ありがとうございます。
>>978
>Response.End以降の処理は実行されないぞ
実行されませんか?Response.End()は単に、「これ以上レスポンスを追加しない」というだけのことで、
PHPのexit()のように「それ移行の処理は実行されない」なんてことはないと思います。
>もうちょっとASP.NET流に作った方がいいんじゃね
今話題にしているのはロジックの書き方であり、これはASP.NET流に作る作らないとはあまり関係ないような。
>>980
>Errorの表示をしたいのなら
エラーを表示したいわけじゃなくて、単にエラー処理をしてるだけです。表示は特にありません。
0983nobodyさん
2009/09/02(水) 22:13:09ID:???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文を(あなた曰く)簡潔に書くための、ロジックの書き方ならこれでいいはず。
0984nobodyさん
2009/09/02(水) 22:13:11ID:???今、普段はNullableなフィールドに親子関係を持たせて親フィールドが特定の条件を満たすとNotNullになるようなコントロールを作りたいんだが、
DynamicValidatorに後付けでNullチェックするValidatorを追加するような事は出来るだろうか?
0986nobodyさん
2009/09/03(木) 00:22:25ID:???<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の設計としては間違ってると思うがな
0987nobodyさん
2009/09/03(木) 01:02:58ID:???たぶん、純粋にその時点で処理を終了するという、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
0988nobodyさん
2009/09/03(木) 01:25:10ID:???>>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-
0989nobodyさん
2009/09/03(木) 01:56:02ID:???いやだから、処理を終了したいならResponse.Endでいいだろ
実際は、処理を終了したいんじゃなくて、その処理ブロックを抜けたいだけだろう
で、ASP.NETにはスクリプトブロックを抜ける命令はないから、
関数呼び出しにして関数抜けろとか、空ループ回してループ抜けろとか言ってるんじゃないか
0990nobodyさん
2009/09/03(木) 02:19:24ID:???あーそうだね
だも処理を抜ける処理としての質問ならphpのexitを例にするのは
ちと意味がちがわなくね?って感じがするね
単にif文を入れ子にしたくないなら>>988のselect caseでいいと思うんだけど。
0991nobodyさん
2009/09/03(木) 10:30:27ID:???割とどうでもいいことで、こういうときうまく書くやり方無いのかなってことでしょ?
形は違うけどいろんな言語やってるとそう思うことは多いよ。
設計が間違ってるとか、メソッドにとかはそりゃそーかもしれんけど、聞いてる人は分かってるだろうし、聞きたいこととは違うかと。
0992nobodyさん
2009/09/03(木) 14:10:39ID:???それにプロシージャ内に書くことがほとんどだからreturnと同義じゃん
0993nobodyさん
2009/09/03(木) 14:19:10ID:1JuFFg5dエラーチェック1
処理1
終了
エラーチェック2
処理2
終了
エラーチェック3
処理2
終了
てやらない? ここでいう終了ってのが無いと、以下全部elseで囲ってネスト深くなっていやっていう話でしょ?
同じ変数の範囲とかのチェックなら selectでもいいかも知れんけどさ。
VBはbreak無しでOKなんだっけ?
0995nobodyさん
2009/09/03(木) 14:25:19ID:???コードビハインドの中でもこういう書き方することあるだろ?
0996nobodyさん
2009/09/03(木) 14:44:59ID:???0997nobodyさん
2009/09/03(木) 14:48:45ID:???それだと、このエラー処理の後の共通処理したいところがすっ飛んじまうって言ってるじゃない。
言ってないかw
まあ、どーでもいい話だな。
そりゃコードの書き方次第だわ
0999nobodyさん
2009/09/03(木) 14:54:14ID:???やるけど、そんなのエラーチェックだけ、別メソッドにするしょ?
だから、一つでもエラーが発生して即終了なら、return falseで終了し返り値にfalseを返すし、
すべてのエラーチェックを通る必要があるなら、bool returnValue = trueを宣言して、
エラーチェック内の処理でreturnValue = returnValue & false;を計算し、
メソッドに返り値でreturnValueを返せばいい。
1000nobodyさん
2009/09/03(木) 15:03:49ID:???【質問】ASP.NETスレ Part6【雑談】
http://pc11.2ch.net/test/read.cgi/php/1251803164/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。