我建立一個網站DotVVM,當我嘗試下面的代碼行,但我得到的錯誤:如何在DotVVM viewmodel中創建會話變量?
Session["Value"] = Item3;
您:NullReferenceException異常
HttpContext.Current.Session.Add ("Value", Item3);
我建立一個網站DotVVM,當我嘗試下面的代碼行,但我得到的錯誤:如何在DotVVM viewmodel中創建會話變量?
Session["Value"] = Item3;
您:NullReferenceException異常
HttpContext.Current.Session.Add ("Value", Item3);
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"]
來訪問你的會話狀態。
您可以通過執行保存在Session對象可以通過執行從會話中檢索對象:
object value = Session["Value"];
通常情況下,你需要將值轉換爲您所使用的類型,因此,如果Item3
是一個字符串,那麼你會怎麼做:
string value = (string)Session["Value"];
您可以從您的視圖,來訪問會話變量一樣,所以你不應該需要將其存儲在您的視圖模型。
在經典的asp.net是的,但我使用新的asp.net框架dotVVM。我後來寫了對不起。 –
@TomášJurásek啊,我的壞 - 我沒有注意到dotvvm標籤。 –