我已经看到了很多有关如何将Session变量放入淘汰赛的问题,但是没有一个问题说明如何从Knockout vm设置一个。我的设置:
-ASPX页面,在该页面上获得Session [“ GridSize”]变量,并将其作为名为currentGridSize的全局变量返回
-VM,在其中获取该全局变量,并设置this.gridSize = globals.gridSize
-Dropdown更改this.gridSize
我需要的:
-设置Session [“ GridSize”] = this.gridSize的某种方法,无论更改还是在离开页面时
我试过了:
-在我的.aspx.vb上使用webmethod函数并进行调用(无法从Shared函数调用会话变量,并且必须共享webmethod)
-从虚拟机调用
最佳答案
通过对页面方法执行以下操作,可以访问ASP.NET AJAX页面方法中的Session
:
<WebMethod(EnableSession := True)> _
Public Shared Sub StoreSessionValue(sessionValue As String)
' Set a value into Session
HttpContext.Current.Session("TheSessionValue") = sessionValue
End Sub
<WebMethod(EnableSession := True)> _
Public Shared Function GetSessionValue(sessionValueName As String) As String
' Get a value from Session
Return HttpContext.Current.Session(sessionValueName)
End Sub
注意:必须将
Session
对象完全限定为HttpContext.Current.Session
。您可以在视图模型函数内部调用此page方法,如下所示:
$.ajax({
type: "POST",
url: "YourPage.aspx/GetSessionValue",
data: "{'sessionValueName':'sessionValue'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
// Do something with data returned here
}
});