【質問】ASP.NETスレ Part5【議論】
■ このスレッドは過去ログ倉庫に格納されています
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落ち?)
あんまり需要ないのかもしれませんが。。。
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") 特定の階層条件を満たすタグにアクセスする
でほぼクリアできそうだ。
■ このスレッドは過去ログ倉庫に格納されています