2017-10-22 6 views
2

セッションを表示したい。それは可能ですか? 私はAspコア2内のセッションオブジェクトにアクセスする

<div class="content-header col-xs-12"> 
    <h1>Welcome, @HttpContext.Session.GetString("userLoggedName")</h1> 
</div> 

私の見解では、これにしてみてくださいしかし、私はエラー

重大度コード説明プロジェクトファイルの行の抑制状態エラー CS0120は、オブジェクト参照が非静的のために必要とされる取得フィールド、メソッド、またはプロパティ 'HttpContext.Session'

それをeciateしてください。おかげ

答えて

2

はあなたのビューにIHttpContextAccessor実装を注入し、Sessionオブジェクトがすでに起動クラスでセッションを有効にするためにすべてのセットアップを持っていると仮定すると

@using Microsoft.AspNetCore.Http 
@inject IHttpContextAccessor HttpContextAccessor 
<h1>@HttpContextAccessor.HttpContext.Session.GetString("userLoggedName")</h1> 

を得るためにそれを使用することができます。

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddSession(s => s.IdleTimeout = TimeSpan.FromMinutes(30)); 
    services.AddMvc(); 
} 
public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
    app.UseSession(); // This line is needed 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 

    }); 
} 
+0

聖なる地獄、私たちはビューのものを注入することができますか?ありがとう! – Wndrr

+0

はい。 asp net coreでこれを行うことができます。 ViewBag経由でものを渡す必要はありません。 ;) – Shyju

+0

しかし、これは 'タイプまたは名前空間の名前 'IHttpContextAccessor'を見つけることができませんでした'と、私はすでにスタートアップクラスでセッションを有効にするためにセットアップしました。 –

関連する問題