2017-03-24 3 views
0

私はこれを行うことによって、コントローラ内のアプリケーションを使用しているユーザーを取得しようとしています:は、フィールド初期化子は非静的フィールド、メソッド、またはプロパティを参照することはできません「Controller.HttpContext」

public class TableNameController : Controller 
{ 
    private ConnectionString db = new ConnectionString(); 
    private string userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " "); 

ときIこれを行う、私は言ってHttpContextの下に波線赤を得る:「Controller.HttpContext」

が非STATにアクセスすることはできません

をフィールド初期化子が非静的フィールド、メソッド、またはプロパティを参照することはできません静的コンテキストのicプロパティ 'HttpContext'

どうすれば解決できますか?

+0

使用インスタンスコンストラクタ – Lanorkin

+0

@Lanorkinあなたはもう少し説明を提供することができますか? –

+0

私はそのメッセージがはっきりしていると思います。特に最初の行です。コンストラクタまたはメソッドで初期化を行います。 –

答えて

2

あなたがやろうとして何のためのフィールド初期化子を使用することはできませんが、簡単にそのためのインスタンスコンストラクタを使用することができます。

public class TableNameController : Controller 
{ 
    ... 
    private string userIdentity; 

    public TableNameController() { 
     userIdentity = HttpContext.User.Identity.Name.Split('\\')[1].Replace(".", " "); 
    } 

    ... 
+0

ahh gotcha、ありがとうございます –

+0

'User'はまだコンストラクタで設定されていません。その行は、アクション内でのみ値を生成します。 – Nkosi

+0

@Nkosiはそれを実行することによってそれを見つけました。だから私はこれをそれぞれの異なるアクションメソッドで宣言しなければなりませんか? –

関連する問題