2017-06-26 7 views
-1

でのセッションから文字列を取得します。私はこのように私のBaseControllerにメソッドを記述しようとしている:ベースコントローラの静的メソッド

public static string GetMyString() 
{ 
    return HttpContext.Current.Session?["WebStringValue"]?.ToString(); 
} 

を価値があった場合、私に価値を与えます。戻り値がnullの場合

私の問題は、VSとコンパイラが私に言っていることです:何

をオブジェクト参照が非静的フィールド、メソッド、またはプロパティのために必要とされる「Controller.HttpContext」

私は行方不明ですか?

+1

'HttpContext'は静的ではありません。つまり、あなたの方法は静的ではありません。 – dcg

+0

あなたのエラーはかなり自明です。あなたは静的メソッドを持っています(静的なことを覚えています**それは呼び出されるクラスのインスタンスを必要としません**)。その静的メソッドの中で**インスタンスメンバー**であるものにアクセスしています**(このプロパティにアクセスするにはクラスのインスタンスを持っている必要があります**) – maccettura

+2

完全修飾を使用してみてください: 'System.Web.HttpContext。 Current.Session ["WebStringValue"]?ToString(); '。コントローラーに非静的な 'HttpContext'プロパティがあります。私はそれがなぜ起きているのだろうと考えています –

答えて

1

問題はコントローラがa non-static HttpContext propertyを定義していることです。適切なusingが見つからないため、コンパイラは(the static HttpContext.Current propertyではなく)そのプロパティを呼び出そうとしていると考えます。

プロパティを呼び出すために、完全な形の名前を使用し、エラーを修正するには、次の

return System.Web.HttpContext.Current.Session?["WebStringValue"]?.ToString(); 
関連する問題