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

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

レス数が950を超えています。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/
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コントロールのボタンコントロールをデフォルトボタンとして設定できるっぽい

他に影響がなければ、これでいけると思う。
これで解決かな?
0924nobodyさん2008/11/15(土) 17:22:17ID:???
というわけで、>>910のお詫びがてら、>>915で約束したとおり義理は果たしたということで。
夕飯たべてくる
0925nobodyさん2008/11/15(土) 17:44:23ID:???
ありがとうございました。

this.form1.DefaultButton = "Login1$LoginButton";
で動作しました。

私はVBでやっていたので、
Me.form1.DefaultButton = "Login1$LoginButton"
でした。

大変時間を頂いてすみませんでした。
0926nobodyさん2008/11/15(土) 18:56:39ID:???
>>920
まぁ、謝ることのほどでもないよ
よくあることだし

>>925
俺はC#でVBは話せないので、すまない。
今回のようにLoginコントロールだけでどうこうなるわけじゃなくて、
他のコントロールが絡んでることもあるから、
なるべく詳しくいろんなことを報告するようにしたほうがいいよ。

自分が気になることは他人も気にしていることだと考えて
気づいたことはすべて報告するようにしたほうがいいと思う。

↓お勧め
http://www.unixuser.org/~ueno/bugs-ja.html
0927nobodyさん2008/11/15(土) 18:57:31ID:???
×まぁ、謝ることのほどでもないよ
○まぁ、謝るほどのことでもないよ

orz
0928nobodyさん2008/11/15(土) 20:58:37ID:???
URLのパラメータによって、ページの内容を変化させたいけど
パネルの入れて表示/非表示切り替える方法以外はどのような方法がありますか?
0929nobodyさん2008/11/15(土) 21:18:50ID:???
>>928
どういうふうに変化させたいの?
コントロールの一部だけか、
レイアウトは同じなんだけど複数のコントロールをごっそり変えたいとか、
またはページそのものを違うものにしたいのか、
コントロールは同じなんだけど、デザインテンプレートだけを変更したいとか。
0930nobodyさん2008/11/15(土) 21:33:11ID:???
>>929
ごっそりです。
書籍を特定するクエリが飛んできたら、その書籍の詳細を表示
なければ見つかりませんと表示
って具合です。
0931nobodyさん2008/11/15(土) 21:51:30ID:???
該当ページがなければ、Response.Redirectで詳細がありませんページに飛ぶとか。

親フレームでクエリを受け取って、該当する書籍がなければ違うページを
子フレームやインラインフレームに読み込むとか。

Panelを使うにしても、UserControlで、プロパティ一つが切り替えるようにするとか。

他になんかあるのかな。マスタページとか嫌いだからその辺はわからない。
0932nobodyさん2008/11/15(土) 22:12:10ID:???
929です。
>>931
ありがとう。参考にします。
0933nobodyさん2008/11/15(土) 23:34:41ID:???
multiviewとか
0934nobodyさん2008/11/16(日) 05:16:43ID:???
929です。
ああ、MultiViewがありましたね。久しぶりで忘れてました。これ使ってみます!!ありがとう。
0935nobodyさん2008/11/16(日) 21:18:48ID:???
aspNETserve
http://code.google.com/p/aspnetserve/

って使ってる香具師いる?
0936nobodyさん2008/11/16(日) 21:49:09ID:???
それは何をするものなの?
0937age2008/11/16(日) 22:34:02ID:gZOlu/94
ASP初心者です。よろしくお願いします。

多人数が見るサイトを構築する際、ページのインスタンスを保持すべきではない。
という記述をhttp://www.atmarkit.co.jp/fdotnet/dotnettips/043postback/postback.html
の@ITさんで見たのですが、
ポストバックしてきたページは別インスタンスということでよろしいのでしょうか?
また保持すべきではないのは、サーバー側に負荷が掛かるから、という認識でよろしいのでしょうか?

よろしくお願いします。
0938nobodyさん2008/11/16(日) 22:50:10ID:???
>>937
そのページをちゃんと読めば、常に別インスタンスって書いてあると思うよ。

ページのインスタンスを保持するのが良くないというのは、
一度、表示に利用したインスタンスはすぐ破棄したほうがいい(使いまわわすこともないし)という
ことだと思うんだけど、ポスト後に同じインスタンスにアクセスすることなんてできるんかいな?

>また保持すべきではないのは、サーバー側に負荷が掛かるから、という認識でよろしいのでしょうか?
保持すべきでないというより、保持できないと思ってたんだけど、
違うなら他の人の指摘待ちかな・・・
0939nobodyさん2008/11/17(月) 02:40:45ID:???
保持はできるんじゃね。
保持したインスタンスをどうやって特定してアクセスするかはしらねえがw

そのページにも保持するなとは書いてないぞ
保持することは現実的じゃないと書いてある

そもそもページのインスタンスそのものを保持する必要性が理解できん
最大限でもViewstateだけ保持すれば事足りると思うんだが
0940nobodyさん2008/11/17(月) 07:39:38ID:???
>>936
IISなしでASP.NETが動くらしい
0941nobodyさん2008/11/17(月) 19:23:30ID:???
>>939
ひょっとしてメモリにデータを保持するアクセスカウンタ的な使い方なんかな?
0942nobodyさん2008/11/17(月) 23:59:53ID:???
ググってみた。日本語で紹介してるサイトもあった。
http://www.moongift.jp/2008/09/aspnetserve/

結局サーバーはwindowsでないとダメなんだよね?
IISは必要ありませんって言われてもあんまりメリットが見えない。
0943nobodyさん2008/11/18(火) 00:29:20ID:???
VS無しで開発してる人なら有用なんじゃないか?それ以外はメリットあるように思えんが・・・
0944nobodyさん2008/11/18(火) 01:05:05ID:???
XPのIIS接続数制限を回避したい、とか。なんにしても微妙だけど。
0945nobodyさん2008/11/18(火) 14:33:33ID:???
VistaHomeや、XPHomeで開発したい人とか。
IISだけの脆弱性を回避したいとか。

Server固有のエラーとかは発生しないものなのかね。
ASP.NETとして動いている部分が100%互換性がないと開発用にも使えないよね。
0946nobodyさん2008/11/18(火) 17:17:24ID:???
ASP.NET開発サーバがコンピュータ名でアクセスできたらいいんだけどな…
たしかFiddlerとかうまく使えないよね…
いや、IEだったらlocalhostでも使えたかな…
0947nobodyさん2008/11/20(木) 00:38:49ID:PklGUJ5B
>>939
>保持はできるんじゃね。
インスタンスはASP.NETランタイムが破棄するから保持できなだろ。
保持したいときは静的変数。
0948nobodyさん2008/11/20(木) 10:31:15ID:???
>>947
いや、だから、それはシステムが保持していないってだけだろ
お前の言うように、破棄される前に静的変数に保存しとけば保持されるはずだろ

んで、それを保持しておくことにほとんどメリットがないから
大元の@ITのページでも現実てきではないと書かれてるんじゃないかね
0949nobodyさん2008/11/20(木) 15:54:43ID:???
インスタンスを静的変数に保持するってことは、
インスタンスの先頭アドレスのポインタを変数に保存しておくってことでしょ?

でもインスタンスが生存しているか、破棄されているかは.net次第だから、
結局、そんなもの保持してても意味ないと思うんだけど
後で使うから破棄しないでね(ハート なんてできたっけ?
0950nobodyさん2008/11/20(木) 20:34:54ID:???
いや、>947が静的変数って書いたから静的変数にって書いたけど、
別に静的変数じゃなくてもいいんだが。
インスタンスはそれが参照されていれば破棄されないから
たとえばセッション変数に保持しとけばあとから参照可能じゃね
(セッション変数にオブジェクト入れるなという話はあるんだがなw)

保持できないから意味がないというから、保持できるんじゃないかと思っただけで
できるできないに引っかかっただけだから

実際試したことないんで、保持できなかったらすまんw
0951nobodyさん2008/11/21(金) 20:01:42ID:???
>>950
そうなるとガーベジコレクタの話になるんかな
なんか不安だから静的変数も必要なくなったらnullを代入しなくちゃいけないんかなと
違うところで不安になってしまった

ま、それはともかく、確かに保持できても意味はないよね
じゃあ、なんのためのSessionやCokkie、ViewStateって話で。

>実際試したことないんで、保持できなかったらすまんw
大丈夫、保持できるかできないかに引っかかってることは理解してるからw

仮に保持できたとして、積極的に保持したほうが便利なんてことがあるのかな。
自分じゃあまり思いつかないな。
0952nobodyさん2008/11/21(金) 22:44:33ID:???
PageはIDisposeを実装してるので、
参照が残っていても使えなくなってる可能性もありそう

ポインタとか言ってる所を見ると、>>949
単にガベージコレクションの動作を知らないだけだとは思うけど
0953nobodyさん2008/11/23(日) 00:00:10ID:???
>>952
いや、オブジェクトを変数に格納するということは、
オブジェクトのポインタを変数に格納することと同義だから、
>>949は間違ってるとは言えないと思う

IDisposeは、それが参照しているローカル変数が属するスコープから抜けた場合に
自動的に実行されるものなわけで、スタティック変数やグローバル変数として保持している限り、
ルートオブジェクトから参照できるオブジェクトとして、ガベージコレクタの収拾対象にはならないはず


0954nobodyさん2008/11/23(日) 04:12:49ID:???
>>953
IDisposeはDisposeメソッドを実装することを強要するだけで、
そのDisposeメソッドが呼び出されることはだれも保証してないと思うんだが

参照が保持されてればGCの対象にならないだけで、
IDisposeがインプリメントされているかどうかは無関係のはず
(ただし、.NETのGCは2段階になってて、正しく実装されたDisposeは
1段階目のGCを抑制することになるが、インターフェィスはメソッドの
実際の実装までは規定してないからな)

>>952はPage.Disposeを呼び出すとそのPageオブジェクトは、たとえ参照が残っていても
使用不可能になってるぞと言ってる

問題は、Page.DisposeはASP.NETが自動的に呼び出すかどうかなんだが
その記述は見つけられなかった。
なんでPage.Disposeは通常は呼ばれないと思ってるんだが、
ページ上のサーバコントロールについてはDisposeが呼び出されるってのを
見たことあるんだよなぁ...Page.Disposeも呼ばれてても不思議はない。

だれか実験してみてくれw
0955nobodyさん2008/11/23(日) 13:53:12ID:???
>>954
言葉が書き足りなかったね
>IDisposeは、それが参照しているローカル変数が属するスコープから抜けた場合に、
>(将来的にGCによって)自動的に実行される
という意味なので、IDisposeについては意見は一致してると思う。

問題は

・スタティック変数やグローバル変数として保持しているインスタンスを、
ASP.NETが破棄するかどうか(IDisposetを呼び出すかどうか)

なわけだよね。
スタティック変数やグローバル変数はGCからみてルート中のルートだから
普通は破棄されないと思うんだがw、
確かにどんな動作してるから実験してみるしかないわなw

だれか頼むw
0956nobodyさん2008/11/23(日) 21:32:15ID:???
>>955
お前の意見だと
GCはDisposeメソッドを(自動的に)呼び出す となるんだが
おれの意見は
GCはDisposeメソッドを呼び出さない だぞ

GCが呼び出すのはあくまでファイナライザで、正しく実装されていれば
ファイナライザ中でDisposeが呼び出されるであろうことが期待される。
お前のいうGCが自動的に呼び出すの意味がこれであるなら、
それは実装によるので保障されてないと言っている

Disposeを呼ぶのはあくまでそのインスタンスを生成した所有者の責任だ


いままでIDisposeって書いてたけど、ほんとはIDisposableだった
もしかして微妙に話がかみ合わないのはそのせいか?

実験したいがいまその環境がないんだよなぁ
0957nobodyさん2008/11/23(日) 22:03:55ID:???
>>956
あー、ちょっとまってくれ、こっともC++/CLI前提で話をしていたかもしれない

>C#とC++/CLIを比較した場合のリソース管理の相違点は、
>C#のusingステートメントに相当する機能が、スコープに統合されている点です。
>たとえば、ローカル変数にDisposeパターンを実装したオブジェクトを記述した場合、
>そのローカル変数が属するスコープを抜ける時に、Disposeメソッドが呼び出されます。

ガーベッジコレクタの話ともごっちゃになってるな。
すまない、ちょっと調べてみる。
0958nobodyさん2008/11/24(月) 02:43:38ID:???
ページの中にボタンを設け、抜粋ですが iTextSharp でPDFを作成し、表示しています。
今の状態ですと、ページが切り替わるのですが、これを別ウィンドウで表示することは
できるのでしょうか?

Protected Sub Bt_Print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_Print.Click

Response.ContentType = "application/pdf"

'PDFドキュメントを作成
Dim doc As Document = New Document(PageSize.A4)
PdfWriter.GetInstance(doc, Response.OutputStream)
               ・
               ・
               ・
doc.Close()
Response.End()

End Sub    
0959nobodyさん2008/11/24(月) 11:11:24ID:???
>>958
自己レスですが、いったんファイルにして、
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2797&forum=7
の方法で解決しました。
0960nobodyさん2008/11/25(火) 17:01:44ID:???
ASP.NETのMVCももうそろそろ正式版になりそうだけど
PHPでいうところのsmartyみたいなテンプレートエンジンはまだ一切出て無いんですかね?
0961nobodyさん2008/11/25(火) 20:03:06ID:???
PHPでいうところのsmartyはそのままaspxじゃないの?
0962nobodyさん2008/11/25(火) 22:46:47ID:tBm7rCDq
Visual Stuido 2008 Professional Edtionつかって、Vista Business上で開発しています。

まだ参考書に従ってサンプルのコードを打ち込んでるレベルです。
最初にWebフォームを作る際、「別のファイルにコードを書き込む」チェックボックスにチェックを入れて作ってるのに、
なぜかときどき、インラインコードになってしまうときがあります。

ページを新規作成してボタンを配置して、ダブルクリックしたらクリックイベントが.aspx.csの方に出来たのに、
いったんVisualStudioを閉じて、.slnファイルを起動して再度ボタンをダブルクリックしたら、
なぜか.aspxファイルのインラインにクリックイベントが出来てしまいました。

どういうときにこの現象が出るか、再現性がいまいちわからないのですが、
インライン←→コードビハインドが勝手に切り替わるのを防ぐにはどうしたらいいのでしょうか。

また、インライン←→コードビハインドの簡単な切り替え方がありましたら教えてください。
0963nobodyさん2008/11/26(水) 16:51:36ID:???
SP1入れた?

あとaspxファイルの
<%@ Language="C#" Inherits="MyStuff.MyClass" %>
が無くて継承元のcsが見つからずにそんな状況になるとか。

想像だけど。
0964nobodyさん2008/11/27(木) 00:54:32ID:???
現在、VS2005(ASP.net)にて通常のhtmlページ内にJavaScript
を色々と記述し勉強しているのですが、IDE上で実行を行うとブラウザが起動
しJavaScriptのコード等も問題無く起動するのですが、エラー一覧に次の様
なエラーがかなり出ています。
※ソースウィンドウからデザインウィンドウに切り替えるとエラーは、0になります。
エラー 1
検証 (XHTML 1.0 Transitional): 要素 'body' に対しては、 開始タグと終了グの間でテキストを使用できません。
※<body id="idBody">
エラー 2
  検証 (XHTML 1.0 Transitional): 要素 'body' に対して は、開始タグと終了グの間でテキストを使用できません。
エラー 3
検証 (XHTML 1.0 Transitional): 要素 'table' を要素 'p' の中に入れ子にすることはできません。
エラー 6
  検証 (XHTML 1.0 Transitional): この名前は大文字を含んでいます。ここで使用することはできません。
エラー 8
  検証 (XHTML 1.0 Transitional): Attribute 値は引用符で囲まなければなりません。

これって直さなくてはならない物なのでしょうか?エラーとはなっていますがどちらかというと警告レベルな気が
してなりません。また、ブラウザ上でJavaScriptコードは正常に動作しており実行時にブラウザの左下に警告メッセージも表示されていません。
0965nobodyさん2008/11/27(木) 00:57:14ID:???
あと入力値チェックについて質問なんですけどWEBブラウザは、設定によりJavaScriptが禁止されている場合もありますよね?
という事は、幾らJavaScript側で入力値チェックをしても無駄な気がします。

皆さんは入力値チェックはサーバ or JavaScript どちらで行っていますか?
09669622008/11/27(木) 01:17:41ID:???
>>963
レスありがとうございます。

解決しました。
コントロールの属性から「runat="server"」が消えていました。
使ってたコントロールはHTMLツールボックスからドラッグしたボタンで、
「runat="server"」をソースに手動で(VS2005にあった「サーバーコントロールとして実行」がなくなったので)入れてたのですが、
たぶん、ctrl+zかなんかでその属性がない状態にもどったときにダブルクリックしたらインラインになっていたのだと思います。

お騒がせしました。
0967 [―{}@{}@{}-] nobodyさん2008/11/27(木) 09:57:14ID:???
>>965
両方で
0968nobodyさん2008/11/27(木) 12:38:12ID:???
>>964
XHTML 1.0 Transitionalという約束に従ってhtmlを記述しているにも関わらず、
(少なくともVSはそう思ってる)
その文法が間違っているんだから修正すべき。

曖昧な記述に対してブラウザが対応してくれてるだけで、
問題が発生するブラウザが存在しないとも限らないから。

>>965
JavaScriptでやるかやらないかは一長一短だけど、
JavaScriptではやらなくても良いけどサーバ側は絶対にやらなきゃ駄目
09699642008/11/27(木) 23:37:28ID:???
>>967
ええっっと。両方ですか。。。
サーバ側だけばっちし固めておけば良いと思ってたんですけど。

>>968
先ずはサーバ側のチェック処理を固めて時間に余裕が出来たら
JavaScriptでもチェック処理を行おうと思います。
0970nobodyさん2008/11/27(木) 23:54:14ID:???
>969
まずサーバの方は必須なのでがっちり固める。
チェックのたびにいちいちリクエスト投げられると使い勝手が悪いような項目はJavaScriptで即座にチェックするという感じで。
0971nobodyさん2008/11/28(金) 00:08:25ID:???
>サーバ側だけばっちし固めておけば良いと思ってたんですけど。

その判断は別に間違いではない。
ただ、javascriptが有効な場合にクライアント側でもチェックすることで、
ユーザビリティが向上したり、サーバの負荷を減らせることもある。

09729692008/11/28(金) 00:17:46ID:???
>>970 >>971
あざーす。参考にさせて頂きます。

あと一つ質問なのですがShilverLightって流行ってるんですか?
あと、VisualStudio2005ではShilverLightは使えないのでしょうか?

0973nobodyさん2008/11/28(金) 00:49:58ID:???
馬鹿の臭いがする
0974nobodyさん2008/11/30(日) 23:26:29ID:F+XZtgWf
ASP.NET2.0のログインコントロールとロールで認証を行おうとしています。
ルートは誰でも許可で、Adminというフォルダを作り、AdminフォルダのWeb.configで
<authorization>
<allow roles="admin"/>
<deny users="*" />
</authorization>
として、adminというロールが設定されているユーザ以外はAdminフォルダ拒否にしました。

ルートにログインコントロールを配置したフォームを作り、DestinationPageUrlに、
Adminフォルダのフォームを指定すると、
adminロールのユーザは指定したフォームが見れて、adminロール以外のロールが設定されているユーザは、
不許可のサーバーエラーになりました。

前置きが長くなりましたが、質問です。
このようなログインフォームで、指定ロールのユーザではないが"別のロールのユーザ"が指定された場合、
DestinationPageUrlに飛ばずに、ログイン画面での再入力を促す(ユーザ名やパスワードが間違ってた時のように)
ようにするにはどう設定するのでしょうか。
0975nobodyさん2008/12/02(火) 02:34:33ID:???
iframeで表示されているページをJavaScriptで切り替えたいと
思い次のコードを記述しているのですがエラーが発生してしまいま
す。一体何が原因なのでしょうか?

【ソース】
//JavaScript
var strURL2 = "http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8";
function ifr()
{
waku.location = strURL2;
}

<!-- リンクの文字-->
<A href="JavaScript:ifr()" id="idHrefFocus">あいうえお</A>

<!-- iFrame -->
<iframe src="http://dictionary.goo.ne.jp/" name="waku" id="id_iframe" width="100%" height="80%"
  style="z-index: 126; left: 24px; width: 98%; position:absolute; top: 544px; height: 38%"></iframe>

【エラー内容】
エラー:')'がありません。
コード:0
0976nobodyさん2008/12/04(木) 02:42:52ID:???
ログインする時に別ウィンドウ開いてログインしたいけど何かヒントください
0977nobodyさん2008/12/04(木) 03:42:47ID:???
ググレカス
0978nobodyさん2008/12/05(金) 20:47:30ID:???
VWDでサイトを作成し、開発環境では動くようになりました。
これを、レンタルサーバーで公開するとき、DBはそのサーバーで作成するのでしょうか。
(今ある開発環境でのDBを持って行くことはできるのでしょうか)
0979nobodyさん2008/12/05(金) 23:16:04ID:???
WebControlのmenuがあるページを作っていますが、NavigateUrlを使わずに
PostBackされた先でクリックされたmenuItemを判断してページに飛びたい
んです。

この場合、どのメニューがクリックされたかをどうやって知ればいいんでし
ょうか?
0980nobodyさん2008/12/06(土) 03:05:24ID:???
>>978
DBがSQL Serverと勝手に解釈して話を進めるが
たいていの場合、DBまではレンタル鯖屋が作成する。
そのDBへ接続するためのIDとパスワードをもらってテーブルの作成以降を
ユーザが行う。テーブルなんかはManagementStudioとかでスクリプト経由で
テーブルを作り直すことになると思われる。

>>979
>WebControlのmenu
って何?
0981MS2008/12/06(土) 03:30:24ID:???
>>980
System.Web.UI.WebControlsのMenuクラスだろ常考
素人は黙ってろ
0982nobodyさん2008/12/06(土) 10:42:32ID:p1onuMwg
死ねばいいのに
0983nobodyさん2008/12/06(土) 15:54:23ID:???
>>980
ありがとうございました。DBはMS-SQLを使っています。
トライアルというのがあったので、そこで実験してみます。
0984nobodyさん2008/12/07(日) 19:50:13ID:MG3uyWjt
Visual studio 2008、SQL server 2005 Expressで開発してます。
ログインコントロール使ってログイン処理が出来ていたのに、マシンを再起動してからログインできなくなりました。
新たに作ったプロジェクトに新規でログインコントロール貼ってもだめです。
管理者用WebサイトでASP.NETWebサイト管理ツール画面を開いて、「セキュリティ」タブを開こうとすると、以下のエラーメッセージが出ます。

「選択されたデータ ストアに問題があります。無効なサーバー名、資格情報または十分なアクセス許可がないことが理由として
考えられます。ロール マネージャの機能が有効化されていないことも理由として考えられます。下のボタンをクリックして
ページにリダイレクトし、新しいデータ ストアを選択してください。
次のメッセージは問題を診断するのに役立つ可能性があります: SQL Server データベースに接続できません。 」
データストアの選択ボタンを押して、表示されたプロバイダを選んでテストにすると、
「データベースへの接続を確立できませんでした。
SQL Server データベースをまだ作成していない場合は、Web サイト管理ツールを終了し、
aspnet_regsql コマンドライン ユーティリティを使用してデータベースを作成および構成してから、
このプロバイダを設定するためにこのツールへ戻ってください。 」
と表示されます。

aspnet_regsql.exeやって完了してるし、SQL Server 2005のDBのテーブルににもアクセスできているのに、
ログインだけができません。
どうやったらログインできるんでしょうか。
0985nobodyさん2008/12/07(日) 19:52:13ID:???
ググレカス
09869832008/12/07(日) 20:32:56ID:MG3uyWjt
「原因はわからないけどUser Instanceをfalseにしたら動いた」という記事があったのでfalseにしたら、
IDE上で接続テストは成功し、テーブルの中身も見れますが、
F5でデバッグ開始するとやはりログインできません。
また、VisualStudioを終了して、再度プロジェクトを開くと、User InstanceがTrueに勝手に戻ってしまいました。

OSを再起動するまでは普通に動いていましたが、原因わかる方いましたら教えてください。
レス数が950を超えています。1000を超えると書き込みができなくなります。