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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
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/
0824nobodyさん2008/10/15(水) 01:27:14ID:???
安全性をできるだけ高めたいならそうするが、別に必須でもないでそ
0825nobodyさん2008/10/15(水) 01:28:04ID:???
どうせ大抵は20分くらいで切れるように設定するんだし。
0826nobodyさん2008/10/15(水) 01:30:34ID:???
まあ、これは好みの問題でもあるけど、俺はサーバ側には、
ステート維持に必須になるような状態はできる限り持たない主義。
0827nobodyさん2008/10/17(金) 03:38:54ID:???
まぁ、マニュアルの「ASP.NET の状態管理に関する推奨事項」の項目通りにしとけばok
0828nobodyさん2008/10/17(金) 08:58:27ID:EdczhNrK
今までXP proにクライアントぶらさげてVWDで作ったアプリ走らせてたんだけど、最近2000 serverのライセンスが余った。

XP proで安定動作してるんだけど、2000serverに換える利点ってあるかな?
セッション数くらい?
0829nobodyさん2008/10/18(土) 00:44:22ID:???
XPのIISでクライアントの接続数が事足りるのか?2000Serverバッチ恋。
0830nobodyさん2008/10/18(土) 01:51:00ID:???
IISのセッション数はなんとでもなるけど、
TCPIP.SYSの接続数の問題がある罠
0831nobodyさん2008/10/18(土) 02:07:40ID:ILpwoZPF
クライアントは12台だけど同時に全部はないんで、行けてる
0832nobodyさん2008/10/23(木) 14:55:33ID:???
質問なのですが、
http://ime.nu/www.atmarkit.co.jp/fdotnet/dotnettips/561aspajaxprepare/aspajaxprepare.html

ここを参考にしてASP.NET AJAX Control Toolkitをサーバ上に組み込み、ファイルをアップロードして実行したところ、以下のようなエラーが出ました。

ファイルまたはアセンブリ 'AjaxControlToolkit'、またはその依存関係の 1 つが読み込めませんでした。アクセスが拒否されました。

サイトルートのbinフォルダにAjaxControlToolkit.dllはありますし、ファイルが壊れているということもありません。
にも係わらずこのようなエラーが出てしまいます。
ローカルのPCでは正常に動作するのですが…。

原因をご存知の方はいらっしゃいますでしょうか。

開発環境はVisualStudio2005 Standardです。
0833nobodyさん2008/10/24(金) 03:32:47ID:icuWvk1z
型指定されたDataSetとTableAdapterをApp_Codeディレクトリ意外の場所(クラスライブラリプロジェクトなど)に作成することってできないのでしょうか?

App_Codeの下にしか作れないとすると、1ソリューションに複数のWebアプリが含まれる場合(参照するデータベースも同一)、
型指定されたDataSetとTableAdapterはWebアプリ毎に(同じクエリであっても)重複して作成する事になってしまうような気がするのですが・・・。

それともそもそもDataAccessレイヤを別プロジェクトとして分ける必要がある規模のシステムでは推奨されない機能だったりするのでしょうか?
その辺りがいまひとつ良く分からずに悩んでいます。
皆さんその辺りはどのようにされているのでしょうか?

0834nobodyさん2008/10/24(金) 11:18:28ID:???
>>832
サーバにExtentionはインストールした?
Web.configの記述は見直した?

>>833
できるよ
クラスライブラリを使用する側のweb.configでTableAdapterが使う接続文字列を指定するのを忘れないように
0835nobodyさん2008/10/24(金) 12:41:29ID:???
使用するコンポーネントの制約で、MasterPageを禁止されてしまいました。
ただ、デザインのほうは、ヘッダがあり、左側にメニューがならび、メニューをクリックすると
右側が変化するというものです。
この場合、フレームを使わなくても実現できるのでしょうか?
ちょっと上のほうを見てみましたが、タブ表示にしているようでしたので…。
0836nobodyさん2008/10/24(金) 15:18:41ID:???
>>834
返答していただきありがとうございます。
Extentionはインストールしております。
Web.Configの記述も見直しましたが特に問題はありませんでした。

また試しにAjaxControlToolkit.dllを削除して実行した所、他のdllでも同様のエラーが発生します。

「ファイルまたはアセンブリ 'XXXXXXXXXXXXX'、またはその依存関係の 1 つが読み込めませんでした。アクセスが拒否されました。」
('XXXXXXXXXXXXX'はdll名)

サイトルート直下のbinフォルダに入っているdll全てに対してエラーが発生しているようです。
0837nobodyさん2008/10/24(金) 20:51:37ID:???
>>835
マスターページは、複数のページで共通レイアウトがある場合に重複コードを無くす目的で使うものなんだから、全てのページにヘッダとメニューを書けば実行結果は同じになる
せめてヘッダとメニューをユーザーコントロールにしておけば、コードの重複も最小限になるよ

>>836
そういうエラーが出た経験があるような気もするけど覚えてないなぁ
新規にソリューションを作成しなおしてサーバに配置しても動かないんだったらなんかのインストールとかIISの設定自体がおかしいんだろうし、
そこから関連するコンポーネントとかを追加していって、ある時点でエラーが出るんだったらそいつが犯人だろうし。
そうやって調べるしかわかんない
08388332008/10/25(土) 10:36:55ID:???
>>834

ありがとうございます。
クラスライブラリプロジェクトにDataSetとTableAdapterを作って行き、各Webアプリケーションプロジェクトでそちらを参照すれば良いという事でしょうか?
その場合、DataSetはApp_Codeディレクトリは作成しなくても問題無いのでしょうか?
0839nobodyさん2008/10/25(土) 14:36:06ID:???
>>837
ありがとうございました。
ユーザーコントロールで試してみます。
0840nobodyさん2008/10/25(土) 16:31:58ID:???
>>836
自分はIIS7でたぶん同じ症状でした
IIS7ならIISマネージャ上で「アプリケーションへの変換」で解決
c:\inetpub\wwwroot\binにdll置いても読んでくれるみたいです
IIS6だと「アプリケーションの設定」かな?
0841nobodyさん2008/10/25(土) 21:14:04ID:???
質問です。
VistaにインストールしたVisual Studio 2005を使いASP.NETでの開発をしております。
デバッグ時に起動する"ASP.NET開発サーバー"上で動いているサイトを異なるブラウザでアクセスすると、
Firefox、Windows版Safari、SeaMonkedyでの表示が異常なほど遅くなります。
IE、Opera、Google Chromeは問題ありません。
結局、IISに発行すると、遅くなってたブラウザでも問題なく普通に表示できるので、開発サーバーだけでの問題と思います。
WindowsXP上での開発はそのようなことはなかったはずなので、実際はVista+開発サーバーでの問題かもしれません。
CSSやJavascriptのバグは開発時に潰したいので、非常にストレスで困っております。
どなたか、Firefox等でも問題なくアクセスできる方法ご存じないでしょうか?
08428342008/10/27(月) 23:48:32ID:???
>>838
うん
DataSet(とTableAdapter)はクラスライブラリプロジェクトにだけ定義すればいい
0843nobodyさん2008/10/28(火) 02:40:25ID:???
Visual C# 2008 Express Edition で ASP.NET を使ったサービスの開発とか
普通に出来るんですか?製品版を買うのと比べて、なにか制約事項があったり
するんでしょうか?

まずは、WinServer2k3にOracle10gXEとIISを入れて、極々簡単な日記システム
でも作ってみようかと思っています。無料とはいえ、落としてくるのもそれな
りに大変そうなので、まずはこちらで質問させて頂きました。
0844nobodyさん2008/10/28(火) 03:07:38ID:???
ASP.NETでの開発ならC#じゃなくてVisual Web Developerってやつ。
クラスライブラリ作るときなんかはC#のほうもいるから両方入れとけ。
制約事項はドキュメント読んでね。(普通に使えるけど)
0845nobodyさん2008/10/28(火) 20:27:14ID:???
VWD2005で画像の表示ページ(View.aspx)を作成しています。

SQLデータベースに、画像のファイル名とタイトルなどを登録していまして、
「前へ」、「次へ」ボタンで画像を送るようにしています。
ボタンは、イメージでクリックされるとJScriptで画像やタイトルを変更する
ようにするには、JScriptからどのようにデータベースの操作をすればよい
のでしょうか?

SQLデータベースには、VB(View.aspx.vb)で接続できるのですが…。
0846nobodyさん2008/10/28(火) 20:36:40ID:wPLaDBkw
>>845
htmlを再読込することなく、やりたいということ?
その方法だと、ASP.NET AJAXを利用するしかない。

具体的にはポストバックした後に実行されるプロシージャ内に、
画像を描画するClientScriptを記述するメソッドをするだけ。

ポストバック→DBに接続→ファイル名を取得
→JavaScriptで画像を切り替えるスクリプトを登録

そんな感じ。

Ajaxを使いたくないなら、前と次のファイル名をすべてhtml内に配列で持って、
それから読み込むようにするしかない。
それもだめならhtmlの再読込を許すしかないね。
0847nobodyさん2008/10/28(火) 20:48:47ID:???
>>845

はい。htmlを再読込すると、いろいろ飾りがあるので、かなりうっとうしくなって
しまって…。

実は、Ajaxをインストールしてあるのですが、つまずいてしまって。
もう一度やってみます。
0848nobodyさん2008/10/28(火) 21:06:12ID:wPLaDBkw
>>847
AJAXだと、ちょっと違うかもしれないけど、
AJAXにもPage.ClientScript.RegisterStartupScriptみたいなメソッドがあって、
それを利用すれば、htmlの再読み込みしなくてもJavaのプログラムを実行できるよ
いまPCがなくて、実際に書いたコードがないので具体的な例は出せないけど・・・

それ以外の方法としては、さっきも書いたけど、
ファイル名をJavaScript内の配列で持つようにして、クリックするたびに
その画像をimgタグのsrcとして指定するような感じしかないかな?
0849nobodyさん2008/10/28(火) 22:02:32ID:???
>>848
JavaScript内の配列にデータを入れるという方法に興味があります。
これは、前の質問にも繋がる?のですが、VBのプログラムでJavaScriptの配列に
データを入れ込むことが出来るのでしょうか?
0850nobodyさん2008/10/28(火) 22:45:04ID:???
>VBのプログラムでJavaScriptの配列に
var a = new Array(<%=カンマ区切りの文字列を返すFunction%>)

あとICallBackEventHandler
0851nobodyさん2008/10/28(火) 22:55:08ID:???
ありがとうございます。
やってみます。
08528322008/10/29(水) 12:37:24ID:???
返事が大変遅れてしまって申し訳ありません。

>>837>>840さん、返答ありがとうございます。
あれから試行錯誤したところ、Web.Configに記述していた
<identity impersonate="true" userName="XXXXXX" password="XXXXX" />
の記述行を変更すると、エラーが消えて正常にページを表示できるようになりました。
記述する行が正しくなかったようです。

ご教授してくださった皆様、ありがとうございました。
0853nobodyさん2008/10/29(水) 16:21:32ID:???
>>850
それこそ、全部Page.ClientScript.RegisterStartupScriptでいいと思うよ

string commaText = "カンマ区切りのファイル名";
string javaScript = "var a = new Array(" + commaText + ") ";
Page.ClientScript.RegisterStartupScript(javaScript);

あと、現在の表示している画像の配列のindex数を保存する変数をJavaで登録して、
クリックするたびにindex++なりindex--して、配列数オーバーのindexなら0に戻すとかして
画像名を取得したら、imgタグにファイル名を渡してあげればいいはず。

そらでタイプしてるから間違ってたらごめん
0854nobodyさん2008/10/29(水) 19:55:38ID:???
質問させてください。
VS2003で作成したものとVS2005で作成したものを比べると、後者の方が
遥かに画面のちらつきが目立つんですが、これは何が理由なんでしょうか?
作り的には、ほぼ同じような作り方をしてるつもりなんですが。

今の所、ちらつきを無くすにはAJAXを使う方法しか見つかっていませんが、
それをVS2005でやるのは大変だと思います。やるならVS2008だと思いますが
期限や予算の関係で今すぐに、という訳にはいきません。

顧客に、VS2005でちらつきが抑えられないならVS2003の方がまだマシだ
という話をされると困りますよね。同じような経験をされている方っていませんか?
08558542008/10/29(水) 19:58:57ID:???
↑大事な所が抜けていた気がするので補足ですが、「ポストバック時」のちらつきです。
0856nobodyさん2008/10/29(水) 22:44:57ID:???
は?
0857nobodyさん2008/10/30(木) 00:39:44ID:???
それは気のせいだから気にするな。
疲れてるから休め。
0858nobodyさん2008/10/30(木) 02:05:52ID:???
>854
なんとなく勝手に埋め込まれるhiddenのフィールドのサイズが2005で増えたプロパティとかの分が死ぬほど膨らんでて
POSTされてるデータ量が増えて遅くなってるんじゃないかなとか思ったり。
それだったらIISのgzipを有効にしてごまかしてみるとか。
まぁ、WebFormってそういうものだしと思ったり…

勝手にポストバックされたりとか意図しないところで勝手なことをいろいろやられてしまうあたりがWebFormは怖くて使えないところ…
だからASP.NET MVCには期待してる。
0859nobodyさん2008/10/30(木) 02:44:47ID:???
ASP.NETでi-mode対応の開発をしてる人っていません?
cookie駄目て事で頭抱えてるんスけど。

cookielessでsession使おうと思ったんだけど、一発目のPOSTに対して勝手に
GETメソッドが走るんで、POSTされた情報が全部消えてしまう('A`
Page.BeginRequestメソッドにはGETの後でしか来ないみたいだし。

やっぱ自前でsessionをDBに管理するしかないンすかね?
08608542008/10/30(木) 03:20:59ID:???
>858
レスどうもです。hidden、ビューステートあたりのデータ量を
削る方法が無いか検討してみます。
0861nobodyさん2008/10/30(木) 07:31:24ID:???
VWDなんだけど、select文で質問。
select文が「?」で記述されてるんだけど、項目がたくさんあるんで「?」だと1回ずつしか使えなくて不便。
変数で記述する方法があるって聞いたんだけど、どこで変数を定義してどうやって使えばいいんでしょう。
0862nobodyさん2008/10/30(木) 19:57:52ID:???
少しは自分で考えたり調べたりってことをしないのかね。
調べたけどわからないので質問しましたって言いそうだが。

sqlcommandクラスからparameters.addwithvalue(key, value)でも調べろ
0863nobodyさん2008/10/31(金) 15:36:07ID:???
ASP.NET MVCって遷移先とパラメータが単純にURLに入りますよね?
ということは、単純にサーバ側で受け取るなら、ユーザが適当にHTTPのPOSTで送ってきたら、
正直に受け取っちゃうことになりませんか?

今まで、勝手にポストバックとか意図しないところで勝手にいろいろやられていたから、
隠されたパラメータでそのあたりが防がれていたと思うんですが、
ASP.NET MVCを使うなら、そのあたりを自前で実装しなくちゃならんのですか?
{id}に常に暗号化したデータを入れるような‥‥
08648632008/10/31(金) 17:20:05ID:???
他のモノを探していたら偶然に見つけました。
要するに、自分でチェックしると書いてあります。
http://weblogs.asp.net/stephenwalther/archive/2008/06/26/prevent-url-manipulation-attacks.aspx
0865nobodyさん2008/10/31(金) 22:32:17ID:???
偽装してwordに差し込むのと、FDFに差し込んでPDFにするのと、どっちが楽?
総合的に判断して。
0866nobodyさん2008/11/01(土) 18:51:30ID:???
ActiveReportを使うのが一番楽
0867nobodyさん2008/11/03(月) 20:35:12ID:???
すごいけど有料かー。

ところで.NET Framework 3.5のOS一覧に2000serverがないんだけど、vistaで開発したアプリを2000serverのIISで実行することって出来ないのかな。

アプリが完成したんで今、実行機に2000serverのインスコ中なんだけど・・・。
0868nobodyさん2008/11/04(火) 02:26:45ID:???
win2k serverのiisではasp.net 2.0は動かないよ
win 2003か2008が必要
0869nobodyさん2008/11/04(火) 09:54:13ID:???
vistaのVWD側で2.0でビルドしたら普通に動いたわー。
3.5は無理だった。
0870nobodyさん2008/11/04(火) 16:31:10ID:???
>>867
Freeのものも結構ありそうだけどね。ASP.NET PDFで検索してみそ
http://www.websupergoo.com/abcpdf-1.htm

動いたっつーか、2.0の機能を利用していないだけとかw
そんなことできるのか知らないけど。
ASP.NETだと、コンパイルするわけじゃないから、
1.0の機能のプロシージャしか利用してなければ1.0でも動く気がする。
0871nobodyさん2008/11/04(火) 22:54:06ID:???
サーバーAにあるページaでボタンを押すと
サーバーBにあるページbに遷移します。
この際にページaのテキストボックスに入力された値をページbで受け取りたいのですが
どうしたらよいですか?
見られたら困るのでクエリーストリングはNGで
データベースやファイルへの読み書きも不可です。
0872nobodyさん2008/11/05(水) 18:43:23ID:???
>>871
異なるサーバで、クエリ以外でやろうとするなら、POSTするしかないんじゃないのかな。
でもPOSTだと、異なるサーバ(ドメイン)にポストしようとすると、ブラウザが許可しないかもね。

異なるサーバ上のページ間でやりとりをしようとすると、確かに不便そうだなぁ
昔はいろいろできたけど、今はセキュリティの関係から許可されてないことも多そうだし。
0873nobodyさん2008/11/05(水) 21:28:26ID:???
>>872
POSTでもリクエストBODYは丸見えですよ

>>871
DBに書き込むのをかたくなに拒否する理由は?
0874nobodyさん2008/11/05(水) 21:55:23ID:???
>>873
クエリでみられなきゃいいのかとおもってさ。
というかDBやファイルの使用を拒否してるんじゃなくて、単純に別ドメインの、
別サーバに反映させたいから、他の方法を聞いてるんじゃないか?

クエリで見えても、中身がわからなければ問題なくて
サーバAにポストバックして、サーバAからResponse.Redirectなどで
サーバBに遷移するなら、ページaのテキストボックスをサーバAで暗号化して、
それを任意の手法でサーバBで受け取って複合化すれば、
できるっていやーできそうだけどね。

暗号強度の高い共通鍵暗号なんか利用できれば、
簡単に解読はできなさそうだし。
いや、思いつきなんだけどね。
0875nobodyさん2008/11/05(水) 22:01:45ID:???
>POSTでもリクエストBODYは丸見えですよ
多分そんなことは分かって書いてると思うよ…
08768712008/11/05(水) 22:45:32ID:???
ありがとうございます、
POSTする(リクエストBODYは丸見え)か
DBを使うかしかないということですね。

表面上見えなければOKなのか、DBを使うべきなのか確認してみます。

DBは頑なに拒否というか、「それだけのために」という思いからだったのですが
それしかないということであればそれで調整してみます。
0877 [―{}@{}@{}-] nobodyさん2008/11/06(木) 09:56:14ID:???
>>876
やったこと無いけど、セッションでなんとかならないかな
stateserver使ってセッション外出しにしといて
両サーバのMachineKeyだったかを同じにしとけば
なんとかなるような気がしなくもない
08788712008/11/06(木) 23:08:56ID:???
結局POSTでOKということになりました。
どうもありがとうございました。

>>877
調べてみたら「複数サーバーでセッションを共有できる」とありますね。
ただサーバーは既にあるものを利用する形になるので今回はちょっと無理そうですが
状況が許せばベストな方法かもしれませんね。
0879nobodyさん2008/11/07(金) 01:24:07ID:???
別サーバでセッション共有は難しいと思うよ。
0880nobodyさん2008/11/07(金) 07:56:45ID:???
POSTで問題ありそうなら、POSTするデータを暗号化すれば
気休めだけど、多少は回避できるよ
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/encrypt/cs.aspx

C# 暗号 で検索すると、いろいろ出るから試してみ

//C#で検索するのは.netを利用してという意味で、VBといれるとVB6時代もでてくるから
0881nobodyさん2008/11/08(土) 11:36:01ID:???
>C# 暗号 で検索すると、いろいろ出るから試してみ
出てくるページにろくなものがない件
08828332008/11/09(日) 13:20:28ID:???
Loginコントロールで使うデータベースにSQ Server以外を使う事って可能ですか?
できれば具体的な実装方法を解説しているサイトなど紹介して貰えるとありがたいです。
0883nobodyさん2008/11/09(日) 19:09:41ID:???
これじゃ、役立たず?
http://support.microsoft.com/kb/910440/ja
0884nobodyさん2008/11/09(日) 21:51:15ID:???
>>883

ありがとうございます。
教えていただいたページの情報を元にいろいろ検索してみたところ、以下のような記事を見つけることができました。

CodeProject: Membership and Role providers for MySQL. Free source code and programming help
http://www.codeproject.com/KB/database/mysqlmembershipprovider.aspx

CodeProject: MySQL Membership, Role, Sitemap, Personalization Provider for ASP.Net 2.0. Free source code and programming help
http://www.codeproject.com/KB/aspnet/Suite_MySQL_Provider.aspx

MySQL :: ASP.NET 2.0 Membership Provider for MySQL
http://forums.mysql.com/read.php?38,63403,63403

nolan bailey's blog: MySQL ASP.NET Membership and Role Provider
http://blog.nolanbailey.com/2008/03/08/mysql-aspnet-membership-and-role-provider/194

どうも最後の記事を見ると、MySQL Connector/Net 5.2.1 以降には標準でMySQL用の MembershipProvider が付属しているみたいですね。
ちょっといろいろ試してみたいと思います。
0885nobodyさん2008/11/09(日) 22:36:33ID:???
というか、ログインコントロールなんて使わなくても、
フォーム認証関連の機能をカスタマイズすれば、
簡単に他のDBでもできると思うんだけど、それじゃだめなんかね。

極論で言えば、認証を認めるか認めないか、TrueかFalseを返すルーチンだけ
自分でつくる(したがってどんなDBでもいい)だけでいいんだから、
まったく気にすることなく利用できると思うんだけど。
0886nobodyさん2008/11/10(月) 03:01:16ID:???
ログインコントロールというかMembershipProviderまわりはけっこう多機能だよね
使えれば使えるにこしたことはないと思うし
0887nobodyさん2008/11/12(水) 17:38:52ID:???
ログインコントロールで、IDを入れて、パスワードを入れて、「ログイン」ボタンをクリックせずに
リターンキーを押すと、IDとパスワードがクリアされるんですが、リターンキーを「ログイン」ボタン
をクリックしたときと同じ動作にすることはできないのでしょうか?
(ID、パスワードは登録しているものです)
0888 [―{}@{}@{}-] nobodyさん2008/11/12(水) 17:59:54ID:???
>>887
DefaultButtonに設定しても駄目?
0889nobodyさん2008/11/12(水) 20:24:58ID:???
>>888
ログインコントロールのプロパティーとかで設定するのでしょうか?
0890nobodyさん2008/11/12(水) 21:40:18ID:???
記憶が正しければ、formのプロパティじゃないか?
formに対して、Enterキーを押すことに対するデフォルトボタンなんだから。

というか、Returnキーって懐かしいな。
今もNEC製パソコンはReturnキーって書いてあるの?
それとも、PC-9801とか、PC-9821とか、PC8801世代の人かな?
0891nobodyさん2008/11/12(水) 23:11:20ID:???
>記憶が正しければ、formのプロパティじゃないか?
>formに対して、Enterキーを押すことに対するデフォルトボタンなんだから。
なるほど。ちょっと見てみます。
ん?ということは、ログインコントロールをばらさなければなりませんかね?

ちなみに、学生の時に88を大枚はたいて買いました。すぐに98が出ましたが…。
0892nobodyさん2008/11/13(木) 10:32:04ID:???
試してみたが、Loginコントロールにクリアボタンはないので、
Enterキーを押下時にログインボタンが押されてるか、
他のボタンが押されてることになってるような気がするんだが、
なんで消えるんだ?

Constructorで、IsPostBack判断せずにLoginコントロールの
初期化をしたりしてる気がする。
0893nobodyさん2008/11/13(木) 13:58:42ID:???
sage
0894nobodyさん2008/11/13(木) 14:55:44ID:???
>>892
書込を見て、そういうことなのか…と思い、確認しました。
すると、登録されたユーザーの場合、

ID、パスワードを入れて、そのままEnterキーを押す
→ Page_Load が呼ばれる。

ID、パスワードを入れて、「ログイン」ボタンをクリック
→ Login1_LoggedInが呼ばれる。

という状態でした。Page_loadには何も書いていなかったので、また、まっさらな
ページが表示されたということだと…。

ただ、解決策が思い当たらない…。
0895 [―{}@{}@{}-] nobodyさん2008/11/13(木) 16:09:28ID:???
>>894
とりあえず、RequiredFieldValidator使うとか
0896nobodyさん2008/11/13(木) 20:02:18ID:???
>>894
ID、パスワードいれて、Enterキーを押すと、Page_Loadが呼ばれるけど、中身は消えないよ。
Page_Loadの中でログインコントロールを初期化してるんじゃないの?

あと、EnabledViewStateをOFFにしてるとか。
つかIEだと、EnabledViewStateをfalseにしても、パスとIDは消えないね。

なんか特殊なことしてるんじゃないの?
0897232008/11/13(木) 20:05:30ID:???
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Login ID="Login1" runat="server" EnableViewState="False" OnLoggedIn="Login1_LoggedIn"></asp:Login>
</form>
</body>
</html>

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login1_LoggedIn(object sender, EventArgs e)
{
}
}

中身はこんだけ。
いろいろコーディングしてるなら、別ページを用意して、最低限のコントロールと、
コーディングだけして試してみたら?
0898nobodyさん2008/11/13(木) 20:43:48ID:???
>>897
丁寧にすみません。
パスとIDは消えませんでした。不正確ですみませんでした。
ページがロードされても前の状態を保っていました。

コントロールをばらして、RequiredFieldValidatorで、「ID、パスワードを入力した後、ログインボタンを
クリックして下さい」といったお願いを書こうと思います。
0899nobodyさん2008/11/13(木) 21:22:43ID:???
>>898
いや、正確なパスワードを入れてボタンを押すなり、Enterキーを押せば
Login1_LoggedInのイベントが発生して、
不正確なパスワードを入れてボタンを押すなり、Enterキーを押せば、
Login1_LoginErrorのイベントが発生するら、
それでやればいいと思うんだけど違うの?

Page_Loadは再読込される度に絶対に呼ばれるわけで。

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Login1_LoggedIn(object sender, EventArgs e)
{
}
protected void Login1_LoginError(object sender, EventArgs e)
{
this.Label1.Text = this.Login1.UserName;
this.Label2.Text = this.Login1.Password;
}
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
}
}

これでログインエラー時に入力されたパスワードとUserNameも取得できるわけで。
0900nobodyさん2008/11/14(金) 00:27:39ID:???
formをあちこちにちらばせられない時点で
Enterキーによる任意のコントロールのSubmitは無理だよなぁ。
マスターページ使っててformタグを途中に入れたら怒られた気がする。
0901nobodyさん2008/11/14(金) 00:39:30ID:XFofzK8r
>>900
javascript使えば可能そうだけどね
0902nobodyさん2008/11/14(金) 08:56:18ID:???
これって文法VBと同じなの?
それとも、C#?
0903nobodyさん2008/11/14(金) 15:50:58ID:???
http://www.google.com/trends?q=ASP.NET%2Cruby%2Cpython&ctab=0&geo=JP&geor=all&date=all&sort=0

あんまり
はやっちょらん
感じだな
0904nobodyさん2008/11/14(金) 16:32:49ID:???
>>899
Page_Load
Login1_LoggedIn
Login1_LoginError
のそれぞれのイベントで、「ログイン」ボタンを押さずにそのままEnterキーを押した、
認証できた(ID、パスワードも取得できる)、認証できなかったという状態の取得が
できることはわかりました。
あとは、そのままEnterキーを押したときにどう対応すればよいということを考えれば
よいということで、メッセージを表示すると考えたのですが…。
0905 [―{}@{}@{}-] nobodyさん2008/11/14(金) 17:39:57ID:???
>>904
あなたが何をしたいのかわからなくなりましたよ。

Enterキーでポストバックしないようにしたいって事?
Enterキーで入力カラムを移動したいとか?

ボタン押すのとEnterキー押すのは等価でいいような気がしますが・・・
0906nobodyさん2008/11/14(金) 19:57:58ID:???
>>904
まず前提としてPage_Loadは、認証できようが、できまいが、ログインボタンを押そうが、押すまいが
絶対にイベントが発生するので無視な。


>「ログイン」ボタンを押さずにそのままEnterキーを押した、
>認証できた(ID、パスワードも取得できる)、認証できなかったという状態の取得が
>できることはわかりました。
ログインボタンを押さず、Enterキーを押されたとき、
認証できた、できなかった状態を取得できることもわかった。

>あとは、そのままEnterキーを押したときにどう対応すればよいということを考えれば
>よいということで、メッセージを表示すると考えたのですが…。
そのままEnterキーを押した時って、それは認証できたときと、できなかった時の対応と同じじゃないの?
0907nobodyさん2008/11/14(金) 23:25:41ID:???
>>901
onsubmitイベントからキーイベント引っこ抜いて〜って感じだな。

EnterキーでのSubmitって個人的には結構重要な要素だけど、
作る側としてはformごとにhidden仕込まなくていいからホント楽だよな。
明細一行ごとにhidden仕込みまくってた頃にはもう戻れんわ。
(更新form用と削除form用とドリルダウンform用と…とか)
0908nobodyさん2008/11/14(金) 23:43:53ID:???
>>907
でも、ASP.NETだと、イベントが発生したコントロールを特定できるから、
そんなことしなくても、一つのformでも十分だと思うけど。
なんか特殊な事例とかある?
0909nobodyさん2008/11/14(金) 23:55:17ID:???
質問です。
ユーザーがログイン済みか判定するにはBeginRequestイベントで毎回確認するのがセオリーなのでしょうか?
0910nobodyさん2008/11/15(土) 00:06:25ID:???
ログイン済みじゃなかったら、自動的に別ページに飛ぶんでないのけ?

つか、ログイン関係について質問してる人は同じ人か?
だとしたら、もう教えて君に近い存在になってると思うぞ?
いちいち聞けば誰かが教えてくれるかもしれんが、
もうちょっと自分で調べて、自分で実験したほうがいいと思う。
そのほうが誰かの返答を待つより効率がいいだろうし、
自分のスキルも上達して、あなたのためになると思う。

少なくとも、ここ数十レスで書かれたログイン関係の
コントロールについては、基本さえあれば、ほんの
10分程度の時間があれば検証して実験する程度の
スキルを身につけることができる。
0911nobodyさん2008/11/15(土) 09:31:40ID:???
>つか、ログイン関係について質問してる人は同じ人か?
いや違います。
私は、ID、パスワードを入力して、ENTERキーを押したときと、「ログイン」ボタンを押した
時に同じ動きにしたかっただけなので…。
0912nobodyさん2008/11/15(土) 09:58:32ID:???
>>911
違うのか、ならすまなかったな。

こっちで実験した感じでは、ログインボタンを押した時と
Enterキーの時では動作が同じだが、何が違うんだ?
0913nobodyさん2008/11/15(土) 11:35:28ID:???
ID、パスワードに正しいものを入力した後(パスワードのところにカーソルがある状態)、
そのままEnterキーを押すと、IDはそのまま、パスワードが空になっています。
→ 認証後に移動するページに飛ばない。
Enterキーを押さずに「ログイン」ボタンを押すと、認証されて、認証後のページに飛ぶ
という状態です。

0914nobodyさん2008/11/15(土) 11:36:32ID:???
↑すみません。レスを勘違いしてアップしてしまいました。
0915nobodyさん2008/11/15(土) 11:39:22ID:???
>>913
なんかわからんが、ネットワーク工事も終わって、
午後は暇になりそうだから、
飯食ったらテストしてみるよ
0916 [―{}@{}@{}-] nobodyさん2008/11/15(土) 11:56:15ID:???
>>913
ブレークポイント仕掛けてデバッグしてる?
おのずと違いがわからないかい
0917nobodyさん2008/11/15(土) 16:14:35ID:???
Login.aspx というページで、ページ内にボタンを配置したユーザーコントロールを
入れています。

そのままEnterキーを押したとき
Login.aspx のPage_Load → ユーザーコントロールのPage_Load
→ ユーザーコントロールのImageButton_Clickを通る。
  (ImageButton_Clickの中には何も書いていません)

「ログイン」ボタンを押したとき
Login.aspx のPage_Load → ユーザーコントロールのPage_Load
→ Login1_LoggedIn を通る。

といった感じでした。

ユーザーコントロールのImageButton_Clickが呼ばれることで、Login1_LoggedIn が
呼ばれないようです。
0918 [―{}@{}@{}-] nobodyさん2008/11/15(土) 16:30:47ID:???
>>917
要は、そのイメージボタンをクリックしてるのね
デフォルトボタンをログインボタンにすれば解決じゃないの?
0919nobodyさん2008/11/15(土) 17:08:56ID:???
ImageButtonを置いてあることを先にいいなさいよw
0920nobodyさん2008/11/15(土) 17:16:11ID:???
すみません。
09219192008/11/15(土) 17:16:55ID:???
今実験してみた。
ImageButtonが、Loginコントロールより前にあると、
Enter押下時にImageButtonのイベントが発生する。
逆にLoginのほうが上にあると、Loginのログインボタンが押されたことになる。

つまり上にあるほうが、Enterキー押下時のデフォルトボタンになるということらしい。
09229192008/11/15(土) 17:18:52ID:???
んで、どうすればいいかというと、
<form id="form1" runat="server">
<asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" />
<asp:Login ID="Login1" runat="server" EnableViewState="False" OnLoggedIn="Login1_LoggedIn" OnAuthenticate="Login1_Authenticate" OnLoggingIn="Login1_LoggingIn" OnLoginError="Login1_LoginError">
</asp:Login>
</form>

protected void Page_Load(object sender, EventArgs e)
this.form1.DefaultButton = "Login1$LoginButton";
protected void Login1_LoggedIn(object sender, EventArgs e)
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
e.Authenticated = true;
protected void Login1_LoginError(object sender, EventArgs e)
this.Label1.Text = this.Login1.UserName;
this.Label2.Text = this.Login1.Password;
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)

これで問題なさげで、Loginのログインボタンがデフォルトボタンになるっぽいな
下のプロシージャは{}省略
09239192008/11/15(土) 17:20:00ID:???
ポイントは、コンストラクタに記述した
this.form1.DefaultButton = "Login1$LoginButton";
かな。これでLoginコントロールのボタンコントロールをデフォルトボタンとして設定できるっぽい

他に影響がなければ、これでいけると思う。
これで解決かな?
レス数が900を超えています。1000を超えると表示できなくなるよ。