トップページphp
986コメント449KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/07/17(火) 23:49:46ID:pyJr9yIy
●過去ログ
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/
0002nobodyさん2007/07/17(火) 23:50:28ID:pyJr9yIy
ASP.NET Developer Center
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さん2007/07/18(水) 00:29:51ID:???
>>1-2
A乙P.NET
0004nobodyさん2007/07/18(水) 01:17:05ID:???
>997 名前: nobodyさん [sage] 投稿日: 2007/07/17(火) 22:48:26 ID:???
>>エラーチェックって皆サーバでやるんすか?
>普通はそうするわな
>
>例えるなら、東口、西口、正面口に入り口がある空港で正面でしか持ち物検査しなかったら、
>幾ら口すっぱく正面口から入れと言い聞かせても東口、西口使う馬鹿が居る。
>だから飛行機に搭乗するには絶対通らなければならない場所で持ち物検査するのと同じ。
>
>>ユーザーがノートPC+Winカードで利用するので
>>クライアントで出来ることはクライアントに任せたいと考えています。
>意味不明。回線が細くて、処理速度が遅いって言うのが理由なら
>なおさら、サーバー側で処理してあげるべきだと思うが。
>998 名前: nobodyさん 投稿日: 2007/07/17(火) 23:47:57 ID:pyJr9yIy
>サーバ側でチェックしてNGだった場合
>再描画されちゃわないんすか?

前スレの最後の質問の件なのですが、サーバで入力値のチェックをやるのが一般的なのはわかりました。
入力値チェックでひっかかった場合、メッセージボックスなどでユーザーに通知しますが
その後再描画処理が走らないのでしょうか?
Page_Loadイベントなりでメッセージボックスを表示して、そのまま処理を中断し
再描画を止めることは出来るのでしょうか?

ページのサイズが大きい場合、クライアントでチェックすれば
再描画はしないので良いのでは?と思っていました。
0005nobodyさん2007/07/18(水) 01:27:49ID:???
だからその辺を効率よくやりたいときはクライアント「でも」チェックしたりする。
0006nobodyさん2007/07/18(水) 03:41:17ID:???
You、Validator使っちゃいなYO
Response.Writeがどうとかチェック用JavaScriptがどうとか言ってるけど
ASP.NETならペタペタコントロールはりつけてやるのが楽なんじゃないの?
0007nobodyさん2007/07/18(水) 09:23:25ID:???
>>4
この手の質問する奴って大抵「クライアントの為に」って
言葉使うんだけど実際には「自分の為に」なんだよな。

エラーチェックに関しても、クライアント側とサーバ側両方で
対応しとけば「クライアントの利便性とデータの正確性」両方
とも網羅できるのに。
0008nobodyさん2007/07/18(水) 11:03:13ID:???
入力エラーの度に再描画なんてされたらむかつかない?
0009nobodyさん2007/07/18(水) 12:03:56ID:???
このサイトを参考にカレンダーコントロールを英語化したのですが
< > ← このリンクにマウスを合わせたときに「前月に移動」「来月に移動」という
ツールチップが表示されます。
各日付のツールチップは英語化できたのですが、「前月に移動」「来月に移動」を英語にすることは可能でしょうか?
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=324245&SiteID=7
0010nobodyさん2007/07/18(水) 17:27:48ID:???
別プロジェクトにあるカスタムコントロールを使用することは不可能でしょうか?
共通オブジェクトのみを集めたプロジェクトを作成し、画面とかカスタムコントロールとかクラスとか
いろんなプロジェクトで使えるようにしたのですが、何故かカスタムコントロールだけ別プロジェクトから利用できません。

「仮想パス '*/test/test1.ascx' がほかのアプリケーションに割り当てられていますが、これは許可されていません。」

というエラーが発生してしまいます。
プロジェクトをまたがるカスタムコントロールの使用は出来ないのでしょうか?

共通部品化出来れば便利なんだけど、そういう考えは普通じゃないのかな・・
0011nobodyさん2007/07/18(水) 22:04:51ID:???
>別プロジェクトにあるカスタムコントロールを使用することは不可能でしょうか?
残念ながら不可能だと思われます。
「共通で利用する部品を作りたい」という目的は
カスタムサーバーコントロールを開発することで達成できますが,
ほんのちょっぴり敷居は高くなります。

お互いがんばりましょう。

>共通部品化出来れば便利なんだけど、そういう考えは普通じゃないのかな・・
普通です。ただしUIが関係する部品はビジネスロジック層以降の共通化に比べるとメリットが小さいと思います。
0012前スレ9862007/07/19(木) 11:40:25ID:???
前スレ>>993
教えていただいたことを参考に、ヤフーの wsdl ファイルの中身の属性などを
いろいろ変更してみたりしたんですが、wsdl.exe だとどうしてもちゃんとした
プロキシクラスが生成されませんでした。

wsdl ファイルの最後に gsoap とあったのでそれを試してみたところ、
単数でしか受け取れなかったものを、しっかり複数で受け取れるような
クラスを生成してくれたので、こちらを使ってみることにします。
どうもありがとうございました。

SOAP を使うと互換性を気にせずに簡単に組めるかと思ったんですが、
そうでもなかったみたいですね><
0013nobodyさん2007/07/19(木) 22:07:16ID:t+6ymqWH
aspxにRequestで受け取った値を出力したいのですが可能でしょうか?
例えば、AタグのHREFにURLを指定しますが、そこのパラメータにRequestで受け取った値をセットしたいのです。
Aタグをサーバコントロールにして、csでセットするというのは出来るのですが、aspxで出来たら手っ取り早いので。。

例)
<a href="top.aspx?id=<% Response.Write(Request["id"]); %>">Top</a>
0014nobodyさん2007/07/20(金) 17:13:03ID:dtQ5f3a5
HttpSessionStateって勝手にWeb.configのsessionStateタグを読みますが
Web.configじゃなくて他のファイルを読ませたい場合はどうしたら良いでしょうか?
Web.configってプロジェクト単位で出来ちゃうから、色んなプロジェクトで共通につかっているファイルを読ませたいんです。
0015nobodyさん2007/07/20(金) 22:09:50ID:???
>>14
構成ファイルの階層と継承の仕組みを考えると,
システム共通の設定はmachine.configで定義するだけで良いし
関連アプリケーション共通の設定ならフォルダ構成をきちんと管理すれば良い。
0016nobodyさん2007/07/21(土) 10:43:46ID:u6ArajqG
>>13
<%= Request
0017nobodyさん2007/07/21(土) 10:45:50ID:???
>>9
可能
なんもかんでもとりあえず聞かずに
実現方法を少しは自分で考えてね。
0018nobodyさん2007/07/21(土) 10:48:50ID:???
>>8
意味不明
「クライアント側でも」の意味が分かってないのか?
とりあえずWEBの基本でも勉強した方がいいよ。
0019nobodyさん2007/07/21(土) 16:36:49ID:LDWi9U5y
ASP.NET2.0で SessionのTimeout時点で処理を行うようにしたいです。
SessionモードはStateServerを使用しています。

すべてのセッションがタイムアウトしているかどうかを監視するサービスを作る必要があるのか
と思ったのですが
簡単に実現する方法はありますでしょうか?

アプリケーション上ですべてのセッションの状態を見ることはどのようにすればできるでしょうか?
HttpApplicationからは自分のセッションしか見れないように見えました。
0020nobodyさん2007/07/22(日) 00:52:26ID:zWRToYk9
VB8ってVS2005で開発するVB.NETのこと?
0021nobodyさん2007/07/22(日) 09:42:13ID:???
VisualBasic(VisualStudio).NET(2002)= 7
VisualBasic(VisualStudio).NET 2003 = 7.1
VisualBasic(VisualStudio).NET 2005 = 8
VisualBasic(VisualStudio).NET 2008 = 9

わからなかったら検索する癖つけような。
WikiPediaに載ってた。
0022nobodyさん2007/07/22(日) 12:41:22ID:???
よくグリッドのヘッダがクリックできるようになってて
クリックすることでそのヘッダでソート出来るというものがありますが
これてクリックしたイベントでSQL発行してソートさせてるんでしょうか?
それともDataTableのメソッドでソート処理が出来るのでしょうか?
0023nobodyさん2007/07/22(日) 15:06:21ID:???
GridViewのソートを自作するのなら
DataTable(DataView)を並び替えようが
SQL発行しようが好きなようにやればよい。
0024nobodyさん2007/07/22(日) 21:07:17ID:???
>>19
そもそも、ASP.NETに関わらず自分のセッション情報以外に
アクセスできるのはセキュリティ的に問題があるので
実装されている方が珍しいと思います。

とりあえず、「すべてのセッションがタイムアウトしているか」なら
SessionモードはStateServerでも確かApplication_OnEndが動いたはず。
コレで代用できるのなら利用してみたら。

あとは、
「すべてのセッションがタイムアウトしているかどうかを監視するサービス」
と言うのをどう言う風に想定してるのか分からんが、
セッション情報をDBにでも書き出しておいて作れば良い。

ASP.NET パフォーマンス カウンタでアクティブなユーザー セッション数が
取得できているから、外部から取得する方法もあるかも知れんが。
http://technet2.microsoft.com/WindowsServer/ja/Library/58de2498-d7d7-4557-ae2f-e6435aac344b1041.mspx?mfr=true
0025nobodyさん2007/07/22(日) 22:12:21ID:???
つい最近までレガシーASPしかやってなかったが、
.NETを使わないとそろそろ…と思いいじりはじめたところ
初歩的なWEBフォームを.NETで作ろうとして悩み中。

レガシーASPでは、
入力画面(html)→入力値のチェック&確認画面の表示(ASP)→DBへ入力値の登録&確認メール送信&登録完了画面の表示(ASP)
という感じでチマチマやってたのを
ASP.NETじゃどうやりゃいいんでしょか?

ググってみたものの、案外そういうもののサンプルが見つかりません。
もっと高度そうなスケジューラとか在庫管理とかならあるんですが、
なにか手がかりあれば、教えていただけると助かります。
0026nobodyさん2007/07/22(日) 22:54:06ID:???
>392
ググって見つからないなら本屋行け。
仮にもASP経験してこの程度のことで人の手借りるのは手抜きにも程がある。
0027nobodyさん2007/07/22(日) 22:55:18ID:???
↑、>25だ
0028nobodyさん2007/07/22(日) 23:27:09ID:???
Eval()とDataBinder.Eval()の違いがいまいち分からないのですが。
それぞれの使いどころを教えていただけないでしょうか?
0029nobodyさん2007/07/22(日) 23:32:46ID:???
>>25
ASP.NETの特性

コントロールの状態(値とか状態とか)を再描画のたびに復元する必要が無い(ViewStateが自動的に行ってくれる)
イベントトリブンで記述が可能(イベントを認識するためのJavascriptを自動的に記述してくれる)
ポストバックが基本(データをポストする先は常にそのページ自身)
コントロールが必要とする基本的なJavascriptは自動的に作成

他にも色々あるが省略
で、これを上を意識できないと結局レガシーASPと同じになるので
やり方は色々あると思うが簡単に説明。

aspxファイルにViewStateを活用するために「Panel」コントロールあたりを3つ作成し、
それぞれのPanelに「入力画面(ボタンやTextBoxのnput系のHTMLタグをASPコントロールで)」、
「確認画面(Labelコントロールあたり)」、「登録完了画面」を作成
あとはasp.netボタンのclickイベントで処理+それぞれのPanelのVisibleを制御
(デザインのボタンコントロールをダブルクリックすればVBの様にイベント書く所へ飛ぶ)
エラーチェックは検証コントロールかJavascript・clickイベント内で行う。

まぁ、本とか>>2のMicrosoft ASP.NET クイック スタート チュートリアルで
サーバコントロールとかViewStateとかの裏側の動き(レガシーASPの動作に置き換えて)
理解する事をお薦めします。
0030nobodyさん2007/07/22(日) 23:54:09ID:???
>>29
ご丁寧な解説どうもありがとうございます。
教えていただいた内容をふまえてがんばります。

ここ1週間ほど本屋を5〜6軒まわりASP.NET初心者向けを3冊ほどは買ったのですが
GridViewやFormViewを使った割と高度なシステムの例はあっても
案外こういう低レベルに見えた受付フォームみたいなものの例がなく、
悩んでおりました。
0031nobodyさん2007/07/22(日) 23:55:11ID:???
レガシーASPはどういう意味ですか?
普通のASPと違うの?
0032nobodyさん2007/07/23(月) 00:05:24ID:???
>>28
DataBinder.Eval(Container.DataItem, "aaa"と
Eval("aaa")の違いって事か?
上記の事なら詳しく説明するの面倒なので簡単に言えば「同じもの」

>>31
legacyの辞書的な意味は『遺産、遺物』。
コンピュータの世界では古い技術であるが現在まで残っている技術
0033192007/07/23(月) 00:05:44ID:???
>>24
レスありがとうございます。

セッションがタイムアウトしたら、連携するシステムに対して
ユーザがいなくなったことを通知しなければいけないので
DB使わずにASP.NET組み込みのイベントなどで簡単にできないのかな?と思いました。

「すべてのセッションを監視して、タイムアウトしたセッションに対して処理を実行したい」が正しい記述でした。
申し訳ないです。

素直にDBに格納する方が楽なようです。
サンプル セッション状態ストア プロバイダ
http://msdn2.microsoft.com/ja-jp/library/ms178588(VS.80).aspx
とか参考にして何とかなりそうです。

> 「すべてのセッションがタイムアウトしているかどうかを監視するサービス」
> と言うのをどう言う風に想定してるのか分からんが、

同一アセンブリ内で監視サービスでセッションを監視しようとしていましたが
AppDomainのアンロードと共に監視対象がリセットされてしまうため、うまくないなぁと。。
アプリケーション状態の保存にもちょっとだけSessionServer使わせてよ。と思ったけど、
現在のHttpContextを元にSessionStateの実装が想定されているので無理でした。
0034nobodyさん2007/07/23(月) 06:47:10ID:srWGE4oQ
SqlDataSourceよりObjectDataSourceのほうが機能がよさげなんですが
SqlDataSourceを使うメリットはあるんでしょうか?
0035nobodyさん2007/07/23(月) 14:26:55ID:???
>>34
SqlDataSourceをGridViewに使えば、
単一のテーブルであれば「ソート」「ページング」「更新」「削除」を
自動的に作成してくれます。

まぁ、ObjectDataSourceとかDataSourceへDataTableとかじゃないと
複雑なロジックには耐えきれないとは思うが。
0036nobodyさん2007/07/23(月) 15:38:43ID:???
マウスカーソルを砂時計にするC#での記述はどのようにすれば良いでしょうか?
JavaScriptでは可能なのですが、C#で書きたいのでよろしくお願いします。
0037nobodyさん2007/07/23(月) 21:38:10ID:???
C#でJavaScriptを書く
0038nobodyさん2007/07/23(月) 21:46:09ID:???
MsgBoxの代用ってJavaScriptかVBScriptしかないんでしょうか?
でも、どこみてもJavaScriptしか書かれてないんですけど、
VBScriptだと相性が悪いんでしょうか?
教えてください
0039nobodyさん2007/07/23(月) 22:14:54ID:???
VBScriptはInternetExplorerでしか動作しないから
0040nobodyさん2007/07/23(月) 22:28:49ID:???
DataSetとDataTableはどう使い分けていますか?
DataSetはあまり使う機会が無いのですが。
DataTableはGridViewのDataSourceにぶち込むためによく利用しますが。
0041nobodyさん2007/07/23(月) 23:16:28ID:yAPedHBa
>>40
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconTheADONETDataSet.asp
0042nobodyさん2007/07/25(水) 12:46:29ID:SGx7LnS+
サーバコントロールのボタンのイベントのonclientclickイベントで
AllDisabled()という全てのコントロールを無効化し、onserverclickイベントで処理をしたいのですが、ボタンを無効にすると
Page_Load後に本来処理が走る、onserverclickイベントが実行されません。

function AllDisalbed()
{
var i;
var cnt;

cnt = document.forms(0).elements.length
for(i = 0; i < cnt; i++){
document.forms(0).elements(i).disabled = true;
}
}

例えば、登録ボタンをクリックした場合など、その処理中に
画面上のボタンやリンクをクリックさせたくない場合、皆さんはどのようにロジックを組んでいますか?
クライアントで処理するのではなく、Page_Loadで書いてたりするのでしょうか?
0043nobodyさん2007/07/25(水) 13:21:44ID:???
>>42
disabledにするとASP.NETのポストバック判別用の
JavaScriptが動作しないのでイベントが動かなくなる。
だから、setTimeoutでワンクッション置くと解決する。

setTimeoutを使いたくないなら、
ttp://osada.bz/PermaLink.aspx?guid=b01b5502-5e06-4e87-a616-16c01610c08e
あたりを参考にdisabledの後にボタン本来のポストバック関数を呼ぶ。
0044nobodyさん2007/07/25(水) 16:41:06ID:???
C#でテキストボックスの内容が数値かどうかをチェックするには
TrayParseを使わないとダメなのでしょうか?

皆さんはこんな感じでロジックを組んでいるのでしょうか?
IsNumeric関数のように対象文字列だけ引数に入れるような関数は無いのでしょうか?

int nNull;

if (!int.TryParse(this.text1.Value.ToString(), out nNull))
{
this.text1.Value = "0";
}
0045nobodyさん2007/07/25(水) 21:02:25ID:???
>>44
好きなように組んでください。
0046nobodyさん2007/07/30(月) 15:04:02ID:7sXEyNUj
テキストボックスやテキストエリアにタグを入力してPostBackすると
「危険な可能性のある Request.Form 値がクライアントから検出されました。」
というエラーが発生します。

このエラー対応はWeb.configに<pages validateRequest="false"></pages>を追加して
サーバでチェックするのが一般的なのでしょうか?
0047nobodyさん2007/07/31(火) 07:39:20ID:XmzlopkS
catch内の処理で例外が発生したらどうなっちゃうの?

catchでエラー画面にResponse.Redirectで遷移し、ついでにResponse.End()もやってるんだけど
これってやばい?
Resonse.RedirectってResponse.End()ってやらないとすぐに遷移しないですよね。
それがヤダ。
画面が全部表示しきってから遷移するんだもんなぁ。
これって何とかならんの?
Response.End()やるしかない?
0048nobodyさん2007/07/31(火) 10:59:11ID:???
>>46
システムによる。

>>47
Resonse.Redirectの第二引数をfalseにしていないなら、
Resonse.Redirectは同時にResponse.Endも行ってるでしょ。

なんか意図してるところが違うのか?よくわからん。
0049nobodyさん2007/08/01(水) 23:18:10ID:Ls359Xqo
ASPの画面であるボタンを押下した時に当然aspx.csの中の
そのボタンイベントメソッドに入ると思うのですが、
その中でいろいろ処理をした後にReturn値を取得して、
分岐でそのReturn値が1だったらASP画面のボタンの右横に○、
2だったらボタンの右横に×を出すようにしたいのですが
どうすればいいのでしょうか?
0050nobodyさん2007/08/02(木) 00:07:35ID:???
なんとも要領を得ない文章だが、サーバサイドとクライアントサイドの処理の違いがわかってないことだけはわかった。
入門書読んで出直しといで。
0051nobodyさん2007/08/02(木) 00:22:10ID:???
>>51
答えられないんだったらいちいち書き込むなよ

>>50
ASP側に id="Label1"というLabelを仕込んで
aspx.csファイル側でif文かなにかで
Label1.Text = "○"
Label1.Text = "×"
にすればよい
0052nobodyさん2007/08/02(木) 00:23:13ID:???
>>51
間違った
49と50だった…
■ このスレッドは過去ログ倉庫に格納されています