如何在DotVVM viewmodel中创建会话变量?

时间:2016-04-20 08:42:49

标签: asp.net session dotvvm

我正在DotVVM中构建一个站点,当我尝试以下代码行时,我收到错误:NullReferenceException

HttpContext.Current.Session.Add ("Value", Item3);

2 个答案:

答案 0 :(得分:7)

DotVVM OWIN中间件,因此您必须先配置OWIN才能启用会话。首先,您需要声明此方法,该方法将打开ASP.NET会话:

public static void RequireAspNetSession(IAppBuilder app) {
    app.Use((context, next) =>
    {
        var httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);
        httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
        return next();
    });

    // To make sure the above `Use` is in the correct position:
    app.UseStageMarker(PipelineStage.MapHandler);
}

然后在Startup.cs文件中,将其命名为:

app.RequireAspNetSession();

然后,您可以使用HttpContext.Current.Session["key"]来访问会话状态。

答案 1 :(得分:0)

您可以通过执行以下操作在会话中保存对象:

Session["Value"] = Item3;

您可以通过执行以下操作从Session中检索对象:

object value = Session["Value"];

通常,您需要将值强制转换为您使用的类型,因此如果Item3是一个字符串,那么您可以这样做:

string value = (string)Session["Value"];

您也可以从视图中访问会话变量,因此您无需将其存储在viewmodel中。