【发布时间】:2015-06-18 11:33:02
【问题描述】:
我有以下构造会话变量的对象:
var sessionObject = function (key) {
this._key = key;
this._content;
this.set = function (v) {
this.setLocal(v);
$.post('/Program/SetVariable',
{ key: this._key, value: v }, function (data) {
});
};
this.get = function (callback) {
var setterCallback = this.setLocal;
$.get('/Program/GetVariable',
{ key: this._key }, function (data) {
setterCallback(data);
}).done(function () {
callback();
});
};
this.setLocal = function (v) {
this._content = v;
};
this.getLocal = function () {
return this._content;
};
}
而我在控制器中的C#如下:
public ActionResult SetVariable(string key, string value)
{
Session[key] = value;
return this.Json(new { success = true });
}
public ActionResult GetVariable(string key)
{
return this.Json(Session[key], JsonRequestBehavior.AllowGet);
}
每次加载页面时,我都会创建一个新的会话对象,它引用服务器上会话中的项目。当使用set() 函数设置会话时,_content 设置正确,并且能够通过item.getLocal()(在浏览器控制台或代码中)公开访问。
当我重新访问该页面并且已经创建了引用该项目的会话对象时,当我运行 item.get() 函数时,它访问会话变量并将其设置为 _content 对象,我知道这一点,因为我可以做到console.log(this._content) 函数中的 console.log(this._content) 表明变量已正确设置。但是,当我希望通过浏览器控制台或其他代码行通过this.getLocal() 或item._content 访问会话对象的内容时,我得到未定义的返回给我。
所以为了更清楚地说明这个过程,这是我在会话中已经有数据的重新加载时所做的:
var item = new sessionObject("item");
item.get(printData);
function printData() {
$("printbox").append(item.getLocal());
}
这不会打印任何东西。
除非item.set 函数特别设置,否则我是否无法访问该项目的内容?
【问题讨论】:
-
您正在创建
sessionObject的实例吗?并且不需要this._content;声明 -
更新了问题以显示我如何使用该对象。
标签: javascript c#