2017-05-18 1 views
0

Ich versuche, ein HtmlHelper in einem MVC Projekt zu verwenden, an dem ich arbeite, aber auf dieses Problem aufgelegt bin. Warum ist Session null, wenn ich versuche, die Hilfsmethode in meinem Nav/Menü teilweise beim Laden der Seite aufzurufen? Es funktioniert überall wo ich es im Projekt verwende, aber wenn ich es in meinem Layout oder Menü teilweise benutze, bekomme ich diese Null-Referenz-Ausnahme.htmlHelper.ViewContext.HttpContext.Session ist 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"]; 
    } 
} 

Antwort

0

Versuchen System.Web.HttpContext.Current statt htmlHelper.ViewContext.HttpContext.

Beispiel:

var httpContext = System.Web.HttpContext.Current; 

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

Sie können hier weitere Informationen über session bekommen.

ODER

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

    } 
} 

Sie mehr Informationen erhalten, können session

+0

habe ich versucht, aber ich bin immer noch die gleiche Null-Referenz Ausnahme bekommen. Danke für den Vorschlag. – Quiver

+0

@Quiver Ich aktualisiere meine Antwort. Bitte versuche es mit einem neuen. – Ashiquzzaman