1 名前:nobodyさん mailto:sage [2009/01/23(金) 09:46:51 ID:???] ●過去ログ Part1 - 【質問】 ASP.NETスレ 【議論】 pc5.2ch.net/php/kako/1040/10406/1040698263.html 【質問】ASP.NETスレ Part2【議論】 pc8.2ch.net/test/read.cgi/php/1111480331/ 【質問】ASP.NETスレ Part3【議論】 pc11.2ch.net/test/read.cgi/php/1160355849/ 【質問】ASP.NETスレ Part4【議論】 pc11.2ch.net/test/read.cgi/php/1184683786/ (dat落ち?) あんまり需要ないのかもしれませんが。。。
121 名前:nobodyさん mailto:sage [2009/04/29(水) 12:57:41 ID:???] >>118 validatorは型どおりのだと便利だけど、 少し複雑なことさせようとするととたんに不便になったり 結局、自分は自分で検証してlabelにエラーメッセージを表示させてるよ
122 名前:120 mailto:sage [2009/04/29(水) 13:02:38 ID:???] ごめん最後の奴はテストのやつそのまま貼ってしまった 標準に戻すだけなら、 this.TestDiv.Style.Clear();か this.TestDiv.Style.Remove("cursor");でいいと思うけど、 postbackされると自動的にカーソルが元に戻ってしまうっぽいので、 何もしなくてもいいのかもしれない あんま検証してないけどいろいろ試してみると面白いかも
123 名前:118 mailto:sage [2009/04/29(水) 15:48:19 ID:???] Protected Sub magazineCheckBox_CheckedChanged (ByVal sender As Object, ByVal e As System.EventArgs)Handles chbMmagazine.CheckedChanged If chbMmagazine.Checked Then ReqEmail.Enabled = True reqConfirm.Enabled = True lblComent.Text = "チェック有り" Else ReqEmail.Enabled = False reqConfirm.Enabled = False lblComent.Text = "チェックなし" End If End Sub みたいに書いてみたんだけど、チェックのON/OFF(hbMmagazine.Checked)を切り替えても 検証(メール欄入力検証:ReqEmail.Enabled = True/False、確認欄入力検証:reqConfirm.Enabled = True/False) つまり、ErrorMesageの表示/非表示 が切り替わらない。どうすれば? >>119 >メールアドレスの必須入力は、CustomValidator使って検査 CustomValidatoの使い方、args.IsValidがどうのていうのが検索したけどよくわからないです。 完全独学で勉強しているものでmicrosoftのサイトを見てもまだ???な状態です。
124 名前:nobodyさん mailto:sage [2009/04/29(水) 18:46:34 ID:???] >>120 クライアントのスクリプト使うなら、Ajax使わなくてもできるような気がする >>123 とりあえず入門書買ってこい チェックボックスの変更でバリデータの有効/無効が切り替えられるのは、 ポストバックが発生した後だってことはわかってるか? ポストバック発生しても切り替わってないってならソース晒せ IsValidは検査に通ったかどうか設定する
125 名前:nobodyさん mailto:sage [2009/04/30(木) 01:34:00 ID:???] あー、任意のページを別ページからインスタンス化したい。 そうすりゃテストとか死ぬほど楽なんだけどなぁ。
126 名前:nobodyさん mailto:sage [2009/04/30(木) 01:45:18 ID:???] 検証コントロールについて詳しく解説しているサイトがあったら教えてください
127 名前:nobodyさん mailto:sage [2009/04/30(木) 13:04:53 ID:???] msdn
128 名前:nobodyさん mailto:sage [2009/04/30(木) 13:06:45 ID:???] 検証コントロール覚えるより正規表現を覚えたほうがいい気がする
129 名前:nobodyさん [2009/04/30(木) 18:37:25 ID:8hdVVO13] ASP.NET ってHTMLの出力がめんどくない? みんなリテラルにつっこんでるの?
130 名前:nobodyさん mailto:sage [2009/04/30(木) 18:56:16 ID:???] htmlそのものを自分で記述して出力することがあんまりないと思う 定型ならLabelに記述するし、テーブルで行によって変化するならRepeaterを使ってしまうから 仮にhtmlを埋め込み式で出力したい場合でも、 public string Nullpo1() return "ぬるぽ"; public void Nullpo2() Response.Write("ぬるぽ"); をコードビハインドに定義して <% =Nullpo1()%> <% Nullpo2();%> をhtmlに埋め込めばいいんでないの? phpと同じだし、そんな大変かな?
131 名前:nobodyさん mailto:sage [2009/04/30(木) 21:17:04 ID:???] >>129 HTMLの生文字列を出力したくなったら、 設計がおかしい(少なくともASP.NET向きではない)と思う。 Labelに<br />をたまに打つ位だな。
132 名前:nobodyさん [2009/05/01(金) 10:28:34 ID:2Yd9vHgr] PHPみたいに <?php foreach(): ?> <htmlタグ> <?php endforeach;?> とか <?php if(): ?> <htmlタグ> <?php else: ?> <htmlタグ> <?php endif; ?> みたいにやりたいんだけど。 出来ないのかな? <% =Nullpo1()%> こうゆうやり方が出来るのはしらなかった。 <dl> <dt>項目</dt> <dd>内容</dd> <dt>項目</dt> <dd>内容</dd> <dt>項目</dt> <dd>内容</dd> </dl> 上記の繰り返しなどをコードビハインド?上で リテラルなどに突っ込んで出力とかは出来るけど、 デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・
133 名前:nobodyさん mailto:sage [2009/05/01(金) 12:24:34 ID:???] 前者はRepeaterコントロールを使う 後者はいろいろやり方があるけど、 例えばある特定の場合のみ表示させたいhtmlタグがある場合は Visible=falseのPanelを配置して条件によってVisible=trueにして表示させる または複数の場合分けが存在しhtmlをごっそりと入れ替えたい場合には MultiViewとViewを利用して表示する条件に従って表示させたいViewを表示させるようにする >上記の繰り返しなどをコードビハインド?上でリテラルなどに突っ込んで出力とかは出来るけど、 これは完全にRepeaterコントロールの範疇のような気がする
134 名前:133 mailto:sage [2009/05/01(金) 12:33:01 ID:???] あとaspみたいな扱いももちろんできるよ <body> <form id="form1" runat="server"> <% for (int i = 1; i < 10; i++) {%> ぬるぽ <%}%> </form> </body> 実行結果「ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ ぬるぽ 」
135 名前:nobodyさん mailto:sage [2009/05/01(金) 13:17:49 ID:???] >>132 >デザイナなどにコードビハインドを変更してもらうのはちょっと気がひけるし・・・ コードビハインドの理想は、デザインとコードの完全な分離なんだ コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる デザインするファイル(*.aspx)には一切のコード書かない コードが必要なとこはすべてコントロールを置く。必要なコントロールがないなら作る コードはすべてコードビハインド(*.aspx.cs,*.aspx.vb)に書く これがasp.netなWEBアプリ開発の基本的な理想形 まあ実際は実行時バインド(<%= %>)とか便利なんで使いまくりなんだがなw
136 名前:nobodyさん mailto:sage [2009/05/01(金) 13:32:14 ID:???] そうなるとITemplateインターフェースを知って勉強がしたくなるよね codezine.jp/article/detail/425?p=1 まーphpとかclassaspのようなwebとして考えるんじゃなくて windowsformの気持ちで取り組んだほうがいいのかもしれない
137 名前:nobodyさん [2009/05/01(金) 13:53:38 ID:2Yd9vHgr] Repeaterの情報ありがとう。 入れ子も出来るみたいだし、それなりに使えるかも。 ただ、繰り返し中の条件分岐を作るのは面倒くさそう。 Panelの表示・非表示は思いついたけど、 Panelって<div>タグに置換されるからちょっといやな感じ。 中身は出力するけど、<div>タグには置換されないならありかも。 ><% for (int i = 1; i < 10; i++) {%> 上記の使い方が出来ないと思い込んでいたけど、 今日試してみたら出来た。 色々検索して探しても、そんな情報が見つからなかったからな。 みんな使っていないって事か? >コードビハインドでコードをデザイナーがどうこうとか考え方がまちがってる もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。 HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。
138 名前:nobodyさん [2009/05/01(金) 13:54:29 ID:2Yd9vHgr] とりあえず、 コードビハインドにパブリックな Hashtableを持たせて、 出力するデータを全て突っ込んで出力することにしました。(邪道?) ↓こんな感じ <% if value("flg") then %> <%= value("data") %> <% end if %> <% for each i as string in value("list") %> <%= string %> <% next %> フリーでテンプレートエンジンもあるようなので、 時間があったら試してみたいです。
139 名前:nobodyさん mailto:sage [2009/05/01(金) 14:56:32 ID:???] 邪道というか、.NET以前のasp的なやり方だな 旧aspの頃にはよくやってた >もちろん、コードビハインドにHTMLタグが一切出てこないようにしたいです。 >HTML出力のためにプログラマに負担がいくのはちょっと…てな感じです。 逆だ。デザイナーに一切のコード見せなくするのが狙い まあ、プログラマーが一切html触らないのは理想だが、 これはさすがにちょっと無理が多いからな ホントは、htmlのレンダリングに関することは、コントロール作成者の役割で プログラマの役割じゃない、ってのが理想形なんだろうな。 (まあコントロール作成者はプログラマなんだがw) asp.netのコントロールはレンダリング相手によって出力するhtml変えるからな 少なくとも ><% if value("flg") then %> ><%= value("data") %> ><% end if %> これは関数化してこの前後のif、end if文ぐらいはコードビハインドに入れてくれと思う
140 名前:nobodyさん mailto:sage [2009/05/01(金) 15:03:27 ID:???] panelがdivになるのが嫌だったら、 <table id="table1" runat="server"> にしてコードビハインドで this.table1.Visible = false でもいいんでないかな あと、よほど遠回りになるなら別だけど 多少のことなら「面倒」を理由に避けるのはいかんと思うw
141 名前:nobodyさん mailto:sage [2009/05/01(金) 15:40:26 ID:???] ASP.NETでテンプレートエンジン使うくらいなら、 ASP.NET MVCを使う方が良いと思う。
142 名前:nobodyさん [2009/05/01(金) 15:52:57 ID:2Yd9vHgr] >逆だ。デザイナーに一切のコード見せなくするのが狙い 理想はそうですよね。 上部に <% Page Language=… とかすら無くしたいものです。 <asp:****> みたいなタグが出てくるとデザインを変更しづらくなるので、 なるべく避けたいところです。 >これは関数化してこの前後のif、end if文ぐらいはコードビハインドに入れてくれと思う このいい方法がおもいつかないです。 例えば動的にアンカーの表示・非表示とURLとアンカーテキストを表示する場合、 どういった感じになるのですかね。 <a href="*****">*****</a> 現在はこんな感じです。 <% if value("hoge") then %> <a href="<%= value("hoge_url") %>"><%= value("hoge_name") %></a> <% end if %>
143 名前:nobodyさん mailto:sage [2009/05/01(金) 16:16:42 ID:???] だから、従来のASPやPHPの方法論を頭から全く捨てて、ASP.NETという新しい概念として理解しないとだめ 動的にアンカーの表示非表示を行うならこうすればいい protected void Button1_Click(object sender, EventArgs e) { if (DateTime.Now.Month == 5) { this.HyperLink1.NavigateUrl = @"www.yahoo.co.jp/ "; this.HyperLink1.Text = DateTime.Now.Month.ToString()+ "月"; this.HyperLink1.Visible = true; } }
144 名前:nobodyさん [2009/05/01(金) 17:16:36 ID:2Yd9vHgr] >動的にアンカーの表示非表示を行うならこうすればいい こういった概念などはわかるんだけど、 デザイナとの分業を考えたときに難しいかなと。 例えばデザイナがアンカーテキストに taget="_blank" を 入れたい場合、わざわざプログラマーに頼む感じになると難しいです。
145 名前:nobodyさん mailto:sage [2009/05/01(金) 17:40:36 ID:???] >例えばデザイナがアンカーテキストに taget="_blank" を入れたい場合、わざわざプログラマーに頼む感じになると難しいです。 デザイナがタグをこうするだけじゃん <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank">HyperLink</asp:HyperLink>
146 名前:nobodyさん mailto:sage [2009/05/01(金) 17:42:10 ID:???] いやだから、taget="_blank"したいならaspxファイルにそう書いとけばいいだけ ブログラマ全く関知する必要ないんだが? asp.netのコントロール使うのが嫌なら、 <a>タグにrunat="server"って書いといてもらえば、コードビハインドでどうとでもできるだろ 関数化する例は>>130 がそのままだろ。VBなら funciton hoge() as string if value("flg") then return value("data") else return "" end if end funciton こんな感じか。 んでaspxに <%= hoge() %> だけかいときゃいい。余分なコード見せる必要ないだろ 未検証だから間違っててもしらね 理想はこういったものはコントロールにするんだよ。 そうすれば、デザイン画面に表示するものも自分で設定できるから
147 名前:nobodyさん mailto:sage [2009/05/01(金) 17:53:56 ID:???] >>146 <a href="test.html" id="anchor" runat="server" target="_blank">123</a> でもいけるからね お好きな方でドゾー <form id="form1" runat="server"> <div> <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank">HyperLink</asp:HyperLink> <a href="test.html" ID="Anchor1" runat="server" target="_blank">Anchor</a> </div> </form> if (DateTime.Now.Month == 5) { this.HyperLink1.NavigateUrl = @"www.yahoo.co.jp/ "; this.HyperLink1.Text = DateTime.Now.Month.ToString() + "月"; this.HyperLink1.Visible = true; this.Anchor1.HRef = "www.yahoo.co.jp/ "; this.Anchor1.InnerText = DateTime.Now.Month.ToString() + "月"; this.Anchor1.Visible = true; }
148 名前:nobodyさん [2009/05/01(金) 18:43:59 ID:2Yd9vHgr] ><a href="test.html" id="anchor" runat="server" target="_blank">123</a> なるほど、runat="server"をつければ変更出来るのですね。 勉強になります。 ASPタグを使わずにHTMLタグの繰返しを行う場合は、 Repeaterを使うのがベストですかね?
149 名前:nobodyさん mailto:sage [2009/05/01(金) 19:24:31 ID:???] 本を一冊買えば分かることを
150 名前:nobodyさん mailto:sage [2009/05/01(金) 19:54:38 ID:???] Repeaterがいいんじゃない ASP.NETの実践的な本は少ないからね。
151 名前:nobodyさん mailto:sage [2009/05/01(金) 20:09:09 ID:???] Repeaterタグの表現にaspタグが必要だから、どんな場合でも不可能 それより、なんでデザイナに対してそこまで気を遣わなければならないかを 記述したほうがもっと良い解決方法が浮かぶと思う
152 名前:nobodyさん mailto:sage [2009/05/01(金) 21:04:22 ID:???] んー。 ASP.NETはPHPと大きく違うよねー。 PHPだとHTMLに埋め込むだけだし、 Dreamweaverも対応しているからデザイナと作業しやすいんだよね。
153 名前:nobodyさん mailto:sage [2009/05/01(金) 21:11:41 ID:???] DreamWeaverはASP.NETも対応してて、普通にASP.NETのタグを出力するぞ? >PHPだとHTMLに埋め込むだけだし、 それもできるよ?
154 名前:nobodyさん mailto:sage [2009/05/01(金) 21:16:03 ID:???] ああ、そうなんだ。知らなかった。 じゃあ、なんでコラボしにくいのかなぁ。
155 名前:nobodyさん mailto:sage [2009/05/01(金) 21:21:36 ID:???] そもそも本当に、コラボしにくいのか?
156 名前:nobodyさん mailto:sage [2009/05/01(金) 21:23:30 ID:???] CSSは当てにくいよね
157 名前:nobodyさん mailto:sage [2009/05/01(金) 21:32:25 ID:???] 何がどうあてにくいんだ?
158 名前:nobodyさん mailto:sage [2009/05/01(金) 21:45:47 ID:???] サーバーコントロール使うと、長いIDが生成されない?
159 名前:nobodyさん mailto:sage [2009/05/01(金) 21:51:57 ID:???] それとCSSと何の関係があるんだ?
160 名前:nobodyさん mailto:sage [2009/05/01(金) 22:55:30 ID:???] IISの話もここでいいかな?
161 名前:nobodyさん mailto:sage [2009/05/02(土) 00:12:57 ID:???] TechNetのフォーラムでいいんじゃない?とは思う
162 名前:nobodyさん mailto:sage [2009/05/02(土) 00:14:45 ID:???] 2chには2chの良さがw
163 名前:nobodyさん mailto:sage [2009/05/02(土) 00:39:28 ID:???] ASP.NETのアプリでSessionを利用しているのですが、 時々タイムアウトしていないのに不意にセッション記憶値が 消える事がありこれを解決したいと思っています。 InProcで動かしているのでワーカープロセスがリサイクルしている せいと思うのですがリサイクルのイベントログを仕込んでも なにもログがでません。 他に何か思いつくことがありますでしょうか? 環境 ・Windows2003、IIS6、DotNet1.1 ・IISの設定画面でワーカープロセスがリサイクルしそうなのを すべてOFFした。 ・DotNet1.1、VS2003でビルドしたアプリをデプロイ 長文すみません。
164 名前:nobodyさん mailto:sage [2009/05/02(土) 00:43:29 ID:???] リサイクルのイベントログってどうやってとってる? パフォーマンスカウンタで確認してるか
165 名前:nobodyさん mailto:sage [2009/05/02(土) 00:45:37 ID:???] これです、よろしくお願いいたしまーす ttp://technet.microsoft.com/ja-jp/library/cc756146.aspx
166 名前:nobodyさん mailto:sage [2009/05/02(土) 05:13:03 ID:???] まずはステートサーバで稼働してプログラムやデバッグ環境に問題がないか確認したほうがいい
167 名前:nobodyさん mailto:sage [2009/05/03(日) 01:07:20 ID:???] >>158 必ずしも長いIDが生成されるわけではないが、場合によっては .aspxファイルに指定したIDと出力されたhtmlのIDが一致しない たとえばリピーターなんかでそのタグを繰り返すと、 識別できるように繰り返されたタグに個別のIDが振られる >>159 ID指定でCSS適用させてると問題になるかもな 後はサーバコントロールがプロパティからCSS生成したりしやがる時があったような気が
168 名前:nobodyさん mailto:sage [2009/05/03(日) 01:17:48 ID:???] >>163 思いつくことってのはセッションが消える理由か? クライアントかプロキシがセッションクッキーぽいしてるんじゃね
169 名前:nobodyさん mailto:sage [2009/05/03(日) 11:14:18 ID:???] >167 わかりやすい説明だね。 マスターページの時もIDが長くなるよね。 こんな記事があるということはCSSが簡単ということはないんじゃない。 「ASP.NET 2.0を使ってCSS対応のWebサイトを作成する」 ttp://japan.internet.com/developer/20070220/27.html
170 名前:nobodyさん mailto:sage [2009/05/03(日) 11:17:11 ID:???] CSS Friendly Control Adaptersは以下に引っ越したのかな? ttp://www.codeplex.com/cssfriendly
171 名前:nobodyさん mailto:sage [2009/05/03(日) 14:26:23 ID:???] >>169 いや簡単だと思うよ ID指定しなければいいだけ。普通にclass=""でCSSクラスを適用すればスタイルシートが適用される
172 名前:nobodyさん mailto:sage [2009/05/03(日) 22:40:49 ID:???] ASP.NETを特殊なものと思い込みすぎだろ 吐き出し方にクセはあるとしても結局はただのHTMLとJavaScript・CSSで組み合わさったページ作るだけじゃないか
173 名前:nobodyさん mailto:sage [2009/05/04(月) 13:12:06 ID:???] ポトペタだけで構築して、出来上がったソースを見もしないやつらが多いということだな
174 名前:nobodyさん mailto:sage [2009/05/04(月) 15:41:59 ID:???] >172 その吐き出し方が気持ち悪いと思う人も多い
175 名前:nobodyさん mailto:sage [2009/05/04(月) 16:24:55 ID:???] 一度でもサーバコントロールを自作してみれば、 中身はただとResponse.Write(html)なのが理解できるのにな
176 名前:nobodyさん mailto:sage [2009/05/04(月) 16:28:46 ID:???] コードビハインドをシンプルにするために、JavaScriptをaspxに埋め込みたい。 けれどマスタページ構成なんかで各ASP.NetコントロールのIDなんかをFindControlして ClientIDプロパティでひっぱってこないとJavaScriptで使えるIDを取得できない。 なのでコードビハインド上でJavaScriptの文字列を動的に出力する形にしてるんですけど もっと賢いやり方ありませんか? そもそもaspxにJavaScript書くのはデザイナさんがいやがる?
177 名前:nobodyさん mailto:sage [2009/05/04(月) 16:38:46 ID:???] >>176 具体的に何がしたいの? イベント発生元のコントロールと、イベントトリガーと、 何のコントロールのどのプロパティを操作したいのかが知りたい
178 名前:176 mailto:sage [2009/05/04(月) 17:37:01 ID:???] 失礼しました。 たとえば1~10の数値が選択できるDropDownList(ASPコントロール)が3つあって、 それぞれに選択された数値の合計が10以内かどうかを、ユーザ側環境でチェックするJavaScriptです。 チェックトリガはDropDownListのonChangeです。 このとき、DropDownListコントロールのIDはASP.NET側が生成してしまうため、 aspxファイルにJavaScriptを書く際のIDをどのように持ってくるのかなと思いまして。。 aspxにJavaScript置いて、コントロールのIDは<%= %>で参照するのが普通ですか? コントロールが3つ程度ならいいのですが、20個、30個を想定した場合はどうなんでしょう?
179 名前:nobodyさん mailto:sage [2009/05/04(月) 19:31:57 ID:???] >>178 DropDownListのOnChangeで、合計値を出すってことかな? そしたら、functionで、それぞれがOnChangeする度に足したり引いたりするスクリプトを書いて、 自分自身をfunction(this)とでもして渡せばいいんじゃない? 別に自分自身のID知らなくても計算可能だと思うが
180 名前:nobodyさん mailto:sage [2009/05/04(月) 20:14:47 ID:???] サンプルかいてみたぞい <script type="text/javascript" src="prototype-1.6.0.3.js"></script> <script language="JavaScript"> var arrayid = new Array(); var arraynum = new Array(); function nullpo(drop){ if (arrayid.indexOf(drop.id) == -1) { arrayid.push(drop.id); arraynum.push(drop.value); } else { arraynum[arrayid.indexOf(drop.id)] = drop.value; } var sum = 0; for (i=0; i< arraynum.length; i++) { sum = sum + parseInt(arraynum[i]); } alert(sum); } </script>
181 名前:nobodyさん mailto:sage [2009/05/04(月) 20:15:40 ID:???] <body> <select id="drop1" OnChange="nullpo(this);"> <option value="0">0 <option value="1">1 <option value="2">2 <option value="3">3 </select> <select id="drop2" OnChange="nullpo(this);"> <option value="0">0 <option value="1">1 <option value="2">2 <option value="3">3 </select> </body>
182 名前:nobodyさん mailto:sage [2009/05/04(月) 20:17:00 ID:???] これならdropdownlistが何個になろうが、OnChange="nullpo(this);"を記述するだけ protorypeかjqueryあたりのハッシュテーブル使えばもっと楽にできるかもしれん
183 名前:nobodyさん mailto:sage [2009/05/04(月) 20:29:28 ID:???] 問題はデザイン時に指定しているIDと 実際に動作しているときに出力されるIDが違う、ってことなんだよな CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある で、解決方法とすれば、実行時にスクリプト書きかえるか なるべくID指定しなくて済むようにスクリプト組むぐらいしかないのかと ClientIDを決定するロジックを自分で決められればいいと思うんだが そんなことできないかな?
184 名前:176 mailto:sage [2009/05/04(月) 21:07:27 ID:???] >>180-182 ありがとうございます。ASPで云々ではなくJavaScript側で対応ですか。 参考になります >>183 CSSもIDとclassで書式が違うので問題になったりしますね。 「なんでIDで指定できないの?」みたいな ExpressionWebってこの辺を解決してくれたりするんですかね?
185 名前:nobodyさん mailto:sage [2009/05/04(月) 21:32:36 ID:???] >>183 おそらく無理 >子コントロールをページにレンダリングするコントロールもあります。 >このような親コントロールは名前付けコンテナであり、INamingContainer を実装します。 >名前付けコンテナを含むページをブラウザに表示すると、 >名前付けコンテナの子コントロールの name 属性と id 属性に一意の ID が指定されていることをページ ソースで確認できます。 >ただし、ブラウザで表示される ID を直接参照することはお勧めしません。 >子コントロールに対して一意の ID を生成する式は変更されることがあります。 >代わりに、子コントロールの ClientID プロパティの値を取得し、 >この値を使用して子コントロールを参照します。 >たとえば、ページ内に動的にクライアント スクリプトを作成する場合があります。 >クライアント スクリプトが子コントロールを参照する場合、 >子コントロールの ClientID プロパティを取得して動的なスクリプトに組み込みます。 msdn.microsoft.com/ja-jp/library/3hc29e2a (VS.80).aspx
186 名前:nobodyさん mailto:sage [2009/05/04(月) 23:41:14 ID:???] >>183 >CSSならクラス指定でいいかもしれないが、スクリプトになると問題がある それで、JQueryが出てきたんでは? どこまで、使えるのか、まだ試してないが。
187 名前:nobodyさん mailto:sage [2009/05/04(月) 23:49:24 ID:???] >>186 そうだjquery勉強しようと思ってたんだった どんどん新しいテクノロジが出てきておいつかないよね asp.net勉強して、C#でジェネリクスとかでてきて勉強して、 そう思ったらajaxでてきて、SQL/CLRもやんなきゃってなって、 LinqToEntityキタ━━━━(゚∀゚)━━━━!!、ラムダ式がきたっちゃになって、 今度はリッチクライアントでsilverlightですか?(´Д⊂グスン いまここ
188 名前:nobodyさん mailto:sage [2009/05/04(月) 23:53:52 ID:???] jQueryで作るAjaxアプリケーション は良い本だった。
189 名前:nobodyさん mailto:sage [2009/05/05(火) 00:01:46 ID:???] サーバサイドの実装がめんどくさそう asp.net ajaxはポトペタだしすごい便利なんだよな
190 名前:nobodyさん mailto:sage [2009/05/05(火) 00:47:31 ID:???] >>186 JQuery詳しく知らないが、普通の一般的なスクリプトのライブラリじゃないの? JQuery使うとIDに依存しない実装できるってんなら話は別だが 今問題にしてるのは、クライアントに出力されるIDをどうするか、って話で サーバ側の制御の問題なんだが
191 名前:nobodyさん mailto:sage [2009/05/05(火) 12:09:59 ID:???] >>190 いま見てみたんだが、だいぶいろんなことが可能そう MSDNによれば、 >他のコントロール内でレンダリングされたコントロールの参照 >子コントロールをページにレンダリングするコントロールには、 >GridView、DetailsView、FormView、DataList、Repeater の >各コントロールなどのデータ リスト コントロール、ユーザー コントロール、 >および Web パーツ コントロールが含まれます。 これらは行が動的に生成されるので、 操作した行にあるコントロールを操作するとか、 同じ列の同じコントロールを全部参照するとかは行うけど ある特定行(ID)をピンポイントで操作するというのはあまりないと思うんだが、 そうすると ・$(".className") 特定のクラスを持つタグにアクセスする ・$(tagName, base) 要素を検索する ・$("tagName > tagName") 特定の階層条件を満たすタグにアクセスする でほぼクリアできそうだ。
192 名前:nobodyさん mailto:sage [2009/05/05(火) 14:03:29 ID:???] 久しぶりにいじると楽しいjavascript jQueryでscriptを記述 <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> function culc() { var sum = 0; for (var i = 0; i < $(".calcSelect").size(); i++) { sum += parseInt($(".calcSelect").get(i).value); } alert(sum); } function getrow(clientid) { var object = $("#" + clientid); alert($("select", object).get(0).value); } </script>
193 名前:nobodyさん mailto:sage [2009/05/05(火) 14:04:24 ID:???] Repeaterでdropdownlistを配置して <form id="form1" runat="server"> <div> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <div id = "<%# Container.ClientID %>"> <select id="Select1" class="calcSelect"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <input id="Button1" type="button" value="button" onclick="getrow('<%# Container.ClientID %>');"/> </div> </ItemTemplate> </asp:Repeater> <input id="Button2" type="button" value="button" onclick="culc();" /> </div> </form> リピータに適当にバインドする this.Repeater1.DataSource = new int[] { 1, 2, 3, 4, 5 }; this.Repeater1.DataBind();
194 名前:nobodyさん mailto:sage [2009/05/05(火) 14:08:38 ID:???] 行のobjectを取得する方法はいろいろあると思うけど、 今回はContainer.CliendIDで行ごとに一意の名前を付けて、 そこから目的とするobjectを取得してみた 列の集計は集計するobjectに同じclass名を設定すれば 配列で取得できるのでそこから合計値を求めることができる クライアント側だけで何かをしようと思うのなら割と便利かもしれない
195 名前:nobodyさん mailto:sage [2009/05/05(火) 14:38:08 ID:???] >>191 同じクラスの要素や、同じタグの要素をID使わないでどうやって識別するんだ? 繰り返し系のコントロールはまあ仕方ないにしても マスターページやUpdatePanelでもID変わるのがなぁ
196 名前:nobodyさん mailto:sage [2009/05/05(火) 14:43:33 ID:???] >>195 >>192-194 で試してるように、極端な話、一意の名前を持ったclassのdivで囲めば直接アクセスできる
197 名前:nobodyさん mailto:sage [2009/05/05(火) 14:59:57 ID:???] >>194 細かい突っ込みだがな、 >今回はContainer.CliendIDで行ごとに一意の名前を付けて、 正確には、システムが自動的に生成した一意の名前を指定して、だな システムが生成したIDを実行時バインドでスクリプト中に埋め込んでるんで、 これは実行時にスクリプト書き換えてる で、このID生成ロジックだが、>>185 が書いてある通り >子コントロールに対して一意の ID を生成する式は変更されることがあります。 だから、それなら自分で実装できないかと思ったんだよ これができれば、マスターページ使うページはIDは そのまま出力させる、ってことが可能じゃないかと思ったんだ いま1.1でマスターページ使ってないシステムあるんだが、試しに マスターページつかって2.0(3.5)に移行してみたら、クライアントスクリプト周りが全滅したんでなw
198 名前:nobodyさん mailto:sage [2009/05/05(火) 15:16:49 ID:???] >>197 いや、だから>>192-194 を読んでる? 今回は一意の名前としてContainer.CliendIDを利用しただけで、 それを自分の用意したものに変更すればいいだけでしょ? そうすりゃ自分で生成したIDで実装しているのと同じじゃない。 例えば private int _count = 0; public string GetID(bool canAdd) return canAdd ? "ctrl" + (this._count++).ToString() : "ctrl" + this._count.ToString(); を実装して、Container.ClientIDの代わりに実行時バインドしてあげればいい。
199 名前:nobodyさん mailto:sage [2009/05/05(火) 16:03:29 ID:???] >>198 実行時バインドで動的に書き換えるならどうとでもなるだろ そもそもの問題はな、ASP.NETのコントロール使うと 自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ これはデータバインドするような繰り返し系のコントロールに限らないんだ で、このルールが制御できない ルール決め打ちでも実用上問題ないかもしれないが、自分でルール決めれたら 実行時バインドに頼らなくても(クライアントスクリプトだけで)ID生成できるだろ サーバコントロールじゃないhtml要素に実行時にID振るなら、自分で制御できるかもしれんな webコントロールじゃなくてhtmlコントロールだと動作変わるのか? あとで実験してみるが、たとえばdivに(実行時バインドで)ctrl1,2,3...ってID振るようにしても、 runat="server"つけたらID変わると思うんだ
200 名前:nobodyさん mailto:sage [2009/05/05(火) 16:57:12 ID:???] そもそもrunat="server"つけると、解析エラーになった サーバコントロールのIDにバインド式は書けない模様
201 名前:nobodyさん mailto:sage [2009/05/05(火) 22:49:02 ID:???] >>165 念のため言っとくが、アプリケーションプールのリサイクルとは別に アプリケーション自体の再起動(アプリケーションドメインの再起動)もあるぞ。 まあありがちなのは、binフォルダにログ書くとかあほなことやってるパターンだな。
202 名前:nobodyさん mailto:sage [2009/05/06(水) 03:19:58 ID:???] >>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ IDは書き換えられないでしょ >マスターページやUpdatePanelでもID変わるのがなぁ こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に コントロール配置してもIDは変化しないよ(Repeater等は除く)? >自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ まったくソースをみてくれてないんだなぁ。 誰もIDの話なんかしていないんだけど。 >そもそもrunat="server"つけると、解析エラーになったサーバコントロールのIDにバインド式は書けない模様 だからID名を実行時にバインドしろなんて言っていないし、 >>192-194 でもそんなことしてないんだが。 なんで>>192-194 のソースを見て何をしているか理解しようとしてくれないのか理解に苦しむ。
203 名前:nobodyさん mailto:sage [2009/05/06(水) 06:54:06 ID:???] >>202 >IDは書き換えられないでしょ サーバコントロールじゃないhtml要素なら書き換えられる >こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に >コントロール配置してもIDは変化しないよ(Repeater等は除く)? これ、サーバコントロールでも? 後日検証してみる >まったくソースをみてくれてないんだなぁ。 >誰もIDの話なんかしていないんだけど。 >>176 ,183 あたりの流れから話してるんだと思ったが、そうじゃなかったのか じゃあお前に絡んだ俺が悪かった >だからID名を実行時にバインドしろなんて言っていないし、 >>192-194 でもそんなことしてないんだが。 >>193 の <div id = "<%# Container.ClientID %>"> は、IDを実行時にバインドしてるのじゃないのかね? まあ、IDがどうこうを主眼にしてないなら、>>192-194 について これ以上俺が言いたいことはない 話がかみ合わないのも当然で、あやまっておく
204 名前:nobodyさん mailto:sage [2009/05/06(水) 09:13:30 ID:???] >>164 >>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 なんにせよリスタートしているか確認して出直してきます。
205 名前:nobodyさん mailto:sage [2009/05/06(水) 10:44:48 ID:???] >仮想ディレクトリ下のファイル・ディレクトリをいじってるので、 どういじってる? 例えばフォルダ作ったりしたら強制再起動だった気がするぞ、詳細は覚えてないが。
206 名前:nobodyさん mailto:sage [2009/05/06(水) 10:49:18 ID:???] 基本的にアプリからいじっていいのは、 App_Data配下のみだと思っておいた方がいい。
207 名前:nobodyさん mailto:sage [2009/05/06(水) 11:16:35 ID:???] 以外と良いスレだな。
208 名前:nobodyさん mailto:sage [2009/05/06(水) 11:46:30 ID:???] >>203 何がしたいんだ? 反論のための反論か?
209 名前:BASP21でメール送信の際 503エラーが起こっています。1 [2009/05/06(水) 13:07:40 ID:rRUTbrry] この質問をご覧いただきましてありがとうございます。 普段、Linux系のサーバを使っていますが、臨時でwindows + ASPのトラブルに当っています。 ASPサイトにて、BASP21で問題無くメール送信をしていたのですが、つい1週間程前から503エラーとなり、原因が判らず困っております。 コードは Set ObjBasp = Server.CreateObject("basp21") rc = ObjBasp.SendMail(メールサーバ,メールto,メールfrom,サブジェクト,mbody,"") Set ObjBasp = Nothing となっていて、1週間前まで送信に問題はありませんでした。 エラー戻り値は 503 This mail server requires authentication when attempting to send to a non-l となっています。 認証が必要なのかと思ったのですが、全く同じソースの、別のページでは 503エラーは出るものの、メールは送信できています。 逆に、メールが全く送信できないページがあり、そこの対処で四苦八苦しております。
210 名前:BASP21でメール送信の際 503エラーが起こっています。2 [2009/05/06(水) 13:14:29 ID:rRUTbrry] サーバはwindows2003です。 サーバ管理者に問い合わせたところ、 > > 要求情報: > > 要求 URL: www.xxxxxx.co.jp/WebResource.axd?d=2dXuOoZJYqjHKODUjwMZpPRcN5cMzka2nYnKY2l5s1&t=6337110551241250 > > 要求パス: /WebResource.axd > > イベント コード: 3005 > > イベント メッセージ: An unhandled exception has occurred. > > 例外情報: > > 例外の種類: CryptographicException > > 例外メッセージ: パディングは無効なので、削除できません。 との返答が帰ってきましたが、 サーバに /WebResource.axd というファイルは無く、 この返答がよく判っていない状況です。 ご指導いただければ幸いです。
211 名前:nobodyさん mailto:sage [2009/05/06(水) 14:39:29 ID:???] WebResource.axd要求してるということは、ASP.NETだと思うんだが まず、ASP.NETなのか旧aspなのか?
212 名前:BASP21でメール送信の際 503エラーが起こっています。 [2009/05/06(水) 16:30:05 ID:rRUTbrry] お返事感謝致します。 本当に不慣れでお恥ずかしい限りですが、 .NETでは無いと思われます。 下記が、ルートにある Default.aspx の頭の部分です <%@ Page Language="VB" MasterPageFile="~/xxxxe.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" title="xxxxxxx" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
213 名前:nobodyさん mailto:sage [2009/05/06(水) 16:53:20 ID:???] .aspxってのは普通ASP.NETの拡張子なんだがな .aspxのなかでServer.CreateObject("basp21") やってるのか?
214 名前:BASP21でメール送信の際 503エラーが起こっています。 [2009/05/06(水) 17:37:24 ID:rRUTbrry] お返事遅れて申し訳ありません。 Set ObjBasp = Server.CreateObject("basp21") 自体は、単体のdefault.aspで行っております。
215 名前:nobodyさん mailto:sage [2009/05/06(水) 19:22:43 ID:???] >>203 いやだからだな・・・ サーバコントロールはRepeaterなどで配置するとIDが変わる ↓ jQueryを使えばいいじゃない ↓ jQuery使ったことないけどID直接指定(ID変わるから)できないから無意味では? ↓ jQueryでサーバコントロールに指定したclass名で直接的にオブジェクト取得できるし jQueryで<div id=''></div>で囲めばid名で直接的にオブジェクト取得できるよ (class名は変わらないし、<div>のタグはサーバコントロールではないのでID変わらないから) という流れで話しているのに、 >>197 >だから、それなら自分で実装できないかと思ったんだよ→だから代替方法を説明してるんですが・・ >>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ→サーバコントロールはできないです >>203 >は、IDを実行時にバインドしてるのじゃないのかね?→サーバコントロールできないからIDかわらんdivで代替してるんです と、かみ合ってないのは、あなたとほうだと思う
216 名前:nobodyさん mailto:sage [2009/05/06(水) 19:26:54 ID:???] だから>>192-194 を実際に動作させて、少しソースをいじってくれれば、 Repeaterコントロール内に設置された、 ASP.NETによって長いIDが勝手に付けられてしまうコントロールでも オブジェクトを取得できるということを示していることがわかると思ううんだが、 なんで試してくれないの? MasterPageでも同様の手法で、長いIDに変わってしまうコントロールを 取得できるから、わりと便利だと思うんだが。
217 名前:nobodyさん mailto:sage [2009/05/06(水) 19:42:52 ID:???] >>209 www.kotaete-net.net/Default.aspx?pgid=14&qid=140640416076
218 名前:nobodyさん mailto:sage [2009/05/06(水) 21:11:31 ID:???] >>216 ためしてるし、お前が示している範囲ではおまえの言うとおりだ
219 名前:nobodyさん mailto:sage [2009/05/06(水) 21:43:45 ID:???] ASPかASP.NETかどっちなんだよw
220 名前:nobodyさん mailto:sage [2009/05/06(水) 22:39:19 ID:???] >>215 >>203 が馬鹿なんだから、ほっとけ
221 名前:nobodyさん mailto:sage [2009/05/07(木) 00:48:26 ID:???] ASP.NET AJAX + jQueryで適当にやってると酷いことになるよね ASP.NET + jQueryかASP.NET AJAXオンリーにするかで分けた方がいいと思う