2017-05-18 21 views
0

私が取り組んでいるMVCプロジェクトでHtmlHelperを使用しようとしていますが、この問題を抱えています。ページロード時にナビ/メニューのヘルパーメソッドを呼び出そうとすると、Sessionがnullになるのはなぜですか?それは私がプロジェクトで使用する他の場所で動作しますが、レイアウトやメニューの部分でそれを試して使用すると、このnull参照例外が発生します。htmlHelper.ViewContext.HttpContext.Session is null

public static class HtmlHelpers 
{ 
    public static ApplicationUser UserInformation(this HtmlHelper htmlHelper) 
    { 
     var httpContext = htmlHelper.ViewContext.HttpContext; 

     if (httpContext.Session["CurrentUser"] == null) 
     { 
      // Get user information 
      var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()); 
      var applicationUser = userManager.FindById(httpContext.user.Identity.GetUserId()); 

      httpContext.Session["CurrentUser"] = applicationUser; 
     } 

     return (ApplicationUser) httpContext.Session["CurrentUser"]; 
    } 
} 

答えて

0

System.Web.HttpContext.CurrentではなくhtmlHelper.ViewContext.HttpContext試してみてください。

例:

var httpContext = System.Web.HttpContext.Current; 

    if (httpContext.Session["CurrentUser"] == null) 
    { 
     // Do somthing. 
    } 

あなたはここにsessionに関する詳細な情報を得ることができます。あなたはより多くの情報を得ることができます

OR

public static ApplicationUser UserInformation(this HtmlHelper htmlHelper,HttpContextBase httpContext) 
{ 
    if (httpContext.Session["CurrentUser"] == null) 
    { 

    } 
} 

session

+0

私はそれを試してみましたが、私はまだ同じヌル参照例外を取得しています。しかし、提案をありがとう。 – Quiver

+0

@Quiver私の答えを更新します。新しいものをお試しください。 – Ashiquzzaman