Session [“SelectedRecords”]用于包含所选记录的Id,例如
SelectedRecords: 1108392 1108393 1108394
当我触发一个从Session [“SelectedRecords”]中删除id的ajax帖子时,就服务器端而言,成功删除了Session [“SelectedRecords”]中的ID ...
List<int> ids = SessionHelper.GetSelectedRecordIds();
ids.Remove(selectedItemModel.Id);
string csv = string.Join<int>(",", ids);
this.Session["SelectedRecords"] = csv;
使用onSuccess / onRequestEnd事件然后使用console.log输出Session [“SelectedRecords”]进行检查。
function onRequestEnd(e) {
console.log('onRequestEnd SelectedRecords: ' + @Session["SelectedRecords"]);
}
但是console.log显示Session [“SelectedRecords”](就客户端而言仍然包含已删除的ID?!)
所以问题是当我通过ajax帖子从Session [“SelectedRecords”]中删除一个值,然后在视图中访问Session [“SelectedRecords”]时,视图报告的是“旧”值,即不是最新的值? !
答案 0 :(得分:1)
通常,当您在Session中有一个对象并且POST一个删除时,您也必须从Session中删除它。这样做如下:
Session.Remove("key");
其中key是您用于在Session
中存储项目的唯一键。
然而,在您的情况下,这将无效。你必须做两件事:
执行此操作后(在更新之后,您的代码中似乎已经有了这个逻辑),您必须将新的SelectedRecords返回给客户端并将旧值替换为新值。
这样的事情:
$("#selectedRecords").val(newSelectedRecords)
以上内容应在AJAX调用的成功回调中执行。