-1

クラスがあり、そのクラスでセッションを作成、削除、編集したいのですが、セッションにデータを追加しようとすると、「オブジェクト null 参照」というエラーが発生します。コントローラーから継承を削除した場合、どのように処理できますか?

私のデータは "name" のような文字列値です。なぜこの構文なのか: Session[name]=value; コントローラーでは正常に動作しますが、私のクラスでは動作せず、null 参照エラーが発生しますか?

public class StateManager : Controller
    {
       public  void RemoveFromApplication(string name)
     {
         Session.Remove(name);
     }
    public  void AddToApplication(string name, object value)
    { 
       //value like "name"
        Session[name]=value;
      }
   }
4

1 に答える 1

0

現在のルートと一致しない場合、コントローラーは MVC によって同じ方法でインスタンス化されないため、おそらく機能しません。

代わりに、次のような静的クラスを作成できます。

public static class SessionManager
{
  public static void RemoveFromApplication(string name)
  {
    HttpContext.Current.Session.Remove(name);
  }

  public static void AddToApplication(string name, object value)
  {
    HttpContext.Current.Session[name] = value;
  }
}

メソッドのセッションをパラメーターとして渡すこともできます。

public static class SessionManager
{
  public static void RemoveFromApplication(string name, HttpSessionStateBase session)
  {
    session.Remove(name);
  }

  public static void AddToApplication(string name, object value, HttpSessionStateBase session)
  {
    session[name] = value;
  }
}

クラスとメソッドは、静的にしたくない場合は、静的である必要はありません。

于 2012-09-19T12:20:42.593 に答える