私は自分のWebサイトへのログインに便利な「ユーザーコントロール」を作成し、サイトマスターに配置しました。ポストバックが発生してセッションが作成され、ページロードイベントがASP.NETで正しくセッションを使用しない
ユーザがウェブサイトにログインし、フルネームを含むウェルカムメッセージでアナウンスする必要があります。フルネームは、ユーザーがログオンしたときに作成されたセッション変数に当然入るはずです。
「page_load」イベントに希望のコードを置き、ウェルカムメッセージを表示/表示するために、適切な状況(ここではlblFullNameというラベル)にユーザーのフルネームを渡すことは間違いありませんログインボタンがクリックされたときに、フルネームはユーザが再びウェブサイトにログインするまで渡されません(2回目)。
なぜこの問題が発生するのですか?
その私のコードの一部:
protected void Page_Load(object sender, EventArgs e) { if (Session["FullName"]==null) { //nothing 2 do. } else { lblFullName.Text = Session["FullName"].ToString(); } }
私は解決策に従って、正しく動作します。どうもありがとう。 –
しかし、私はASP.NETとC#の環境に新しいので、何が起こったのか正確には理解できませんでした。同じセッションコンセプトを使用するより簡単な方法はありますか? –
はい、セッション変数を使用できます。しかし、それは私の解決策ほどきれいではありません。値を関数の引数として渡すことは、セッション変数を使用するよりも優れています。グローバル変数は、他のソリューションが機能しない場合にのみ使用してください。いずれにしても、(1) 'StringEventArgs'を作成しないでください。(2)' Session ["FullName"] = fullName;で 'UserLoggedIn(this、new StringEventArgs(fullName)); UserLoggedIn(this、EventArgs.Empty); '、(3)' lblFullName.Text = e.Value;を 'lblFullName 'に置き換えます。Text =(string)Session ["FullName"]; '(' StringEventArgs'の代わりに '' EventArgs''を使用します)。 – ConnorsFan