我正在尝试在我正在处理的HtmlHelper
项目中使用MVC
,但我对这个问题感到困惑。当我尝试在页面加载时在导航/菜单部分中调用辅助方法时,为什么Session
为空?它适用于我在项目中使用它的任何其他地方但当我尝试在我的布局或菜单部分中使用它时,我得到这个空引用异常。
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 :(得分:0)
尝试System.Web.HttpContext.Current
而不是htmlHelper.ViewContext.HttpContext
。
示例:
var httpContext = System.Web.HttpContext.Current;
if (httpContext.Session["CurrentUser"] == null)
{
// Do somthing.
}
您可以在此处获取有关session的更多信息。
或强>
public static ApplicationUser UserInformation(this HtmlHelper htmlHelper,HttpContextBase httpContext)
{
if (httpContext.Session["CurrentUser"] == null)
{
}
}
您可以获得有关session
的更多信息