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


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

【質問】ASP.NETスレ Part5【議論】



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落ち?)

あんまり需要ないのかもしれませんが。。。

118 名前:nobodyさん mailto:sage [2009/04/29(水) 02:16:14 ID:???]
氏名          :TextBox 検証コントロール:RequiredFieldValidator
メールアドレス     :TextBox 検証コントロール:RequiredFieldValidator と RegularExpressionValidator
メールアドレス(確認) :TextBox 検証コントロール:RequiredFieldValidator と CompareValidator
メルマガ配信      :CheckBox(配信希望のときチェック)

[送信]ボタンクリックで、確認画面を表示

のようなWebフォームを作りたいのですが

検証条件
1.氏名入力必須
2.メルマガ配信がチェック有りの場合は、メールアドレス入力必須
3.メルマガ配信がチェック無しの場合は、メールアドレス入力任意

のようにしたいのですがアドバイスお願いします。

119 名前:nobodyさん mailto:sage [2009/04/29(水) 03:23:09 ID:???]
>>117
マウスカーソルを出してるのはクライアントだから、
サーバ側のプログラムでマウスカーソルを変えることはできません
また、クライアントはサーバが処理中かどうかはわかりません
WEBのアプリってのはそういうもんです

>>118
メールアドレスの必須入力は、CustomValidator使って検査

120 名前:nobodyさん mailto:sage [2009/04/29(水) 12:49:22 ID:???]
>>117
asp.net ajaxでやってみたら、なんとなくだけどできそうな感じ

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
  <div id="TestDiv" runat="server">
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
   <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
  </div>
 </ContentTemplate>
</asp:UpdatePanel>

Page_Loadに
this.Button1.Attributes.Add("onclick", "TestDiv.style.cursor = 'wait'");
としてjavascriptでbutton1クリック時にカーソルをwaitに変更し、

Button1_Clickイベント発生時に処理を行ったあとに
System.Web.UI.HtmlControls.HtmlGenericControl a = (System.Web.UI.HtmlControls.HtmlGenericControl)this.ScriptManager1.Page.FindControl("TestDiv");
a.Style.Add("cursor", "default");
でカーソルをデフォルトに戻す


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
ためしてるし、お前が示している範囲ではおまえの言うとおりだ






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

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

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