在我的viewModel中,我想获取当前的会话值。为此我写的是这样的:
self.currentUserId = ko.observable(HttpContext.Current.Session["UserID"]);
但它显示我的错误
ReferenceError: HttpContext is not defined.
如何定义HttpContext?或者有没有办法获得当前的会话值?
答案 0 :(得分:5)
更改您的陈述
self.currentUserId = ko.observable(HttpContext.Current.Session["UserID"]);
要 如果您使用webform和viewmodel的应用程序与aspx页面内联
self.currentUserId = ko.observable('<%=HttpContext.Current.Session["UserID"]%>');
如果MVC使用具有内嵌视图模型的剃刀视图引擎
self.currentUserId = ko.observable('@HttpContext.Current.Session["UserID"]');
和如果你的viewmodel在外部js文件中,那么首先将它存储在js变量中并使用js
之类的,你不能在外部js文件中使用HttpContext.Current.Session["UserID"]
。
<script type="text/javascript" src='<path_of_knochout.js>'></script>
<script type="text/javascript">
var userId = '<%=HttpContext.Current.Session["UserID"] %>';
</script>
<script type="text/javascript" src='<your_view_model_js>'></script>
在<your_view_model_js>
文件中使用
self.currentUserId = ko.observable(userId);