0

ユーザーがログインするページで C# コード ビハインドを使用しています。この時点で、ログイン情報がデータベースによって検証できると仮定して、セッション全体で追跡したいセッション変数を設定します。セッションをどこにも初期化しませんが、セッション変数を設定することで、とにかくこれが発生します。コードにエラーはありませんが、これを適切に行っているかどうかはわかりません。

ログイン成功直後のページの分離コード:

Business.User user      = new Business.User();

user.SetLabelCompanyId();
user.SetLabelUsername();

_labelUsername.Text     = user.GetLabelUsername();
_labelCompanyId.Text    = MySession.Current.CompanyId; 

私が電話_labelUsername.Textする方法は私がやろうとしていることですが、私が電話する方法は_labelCompanyId、私のプロジェクトに慣れていない人にとっては混乱を招くと私が感じるものです. セッションを作成するという目的は達成されますが、同じ方法で使用されているにもかかわらず、Username とは別の方法で呼び出されます。私がやりたいことは次のとおりです。

_labelUsername.Text     = user.GetLabelUsername();
_labelCompanyId.Text    = user.GetLabelCompanyId();

そして、これらの行が初期化する前のどこかMySession。これどうやってするの?上記の 2 行を使用すると (他には何も言及されていませんMySession)、セッションが null であるというエラーが表示され、ログイン ページにリダイレクトされます。

4

1 に答える 1

0

ユーザーが初めてサイトを開いたときに、セッションが初期化されます。ただし、現時点では、セッション変数は初期化されていません。あなたはこのようなものが必要です

//inside in your Business.User class (set reference to System.Web)
public string GetLabelCompanyId()
{
  string returnValue = String.Empty;
  HttpContext context = HttpContext.Current;
  if(context != null)
  {
     if(context.Session["CompanyId"] != null)
     {
        returnValue = context.Session["CompanyId"];
     }
  }

  return returnValue;
}

ログインに成功すると、値をセッション変数に格納できます。

ビジネスクラスで直接ではなく、HttpContextにアクセスするために別のクラスを使用することを強くお勧めします。

于 2013-01-10T19:08:26.810 に答える