如何在 DotVVM 视图模型中创建会话变量?
How do I create a session variable in DotVVM viewmodel?
我正在 DotVVM 中构建站点,当我尝试以下代码行时出现错误:NullReferenceException
HttpContext.Current.Session.Add ("Value", Item3);
您可以通过以下操作在 Session 中保存对象:
Session["Value"] = Item3;
您可以通过以下操作从会话中检索对象:
object value = Session["Value"];
通常,您需要将值转换为您使用的类型,因此如果 Item3
是一个字符串,那么您会这样做:
string value = (string)Session["Value"];
您也可以从您的视图访问会话变量,因此您不需要将它存储在您的视图模型中。
DotVVM 是一个 OWIN 中间件,因此您必须先配置 OWIN 才能启用会话。首先需要声明这个方法,开启ASP.NET session:
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"]
访问您的会话状态。
我正在 DotVVM 中构建站点,当我尝试以下代码行时出现错误:NullReferenceException
HttpContext.Current.Session.Add ("Value", Item3);
您可以通过以下操作在 Session 中保存对象:
Session["Value"] = Item3;
您可以通过以下操作从会话中检索对象:
object value = Session["Value"];
通常,您需要将值转换为您使用的类型,因此如果 Item3
是一个字符串,那么您会这样做:
string value = (string)Session["Value"];
您也可以从您的视图访问会话变量,因此您不需要将它存储在您的视图模型中。
DotVVM 是一个 OWIN 中间件,因此您必须先配置 OWIN 才能启用会话。首先需要声明这个方法,开启ASP.NET session:
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"]
访问您的会话状态。