Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ajax请求期间更新会话,然后在视图中访问会话_C#_Asp.net Mvc_Session_Kendo Grid_Asp.net Ajax - Fatal编程技术网

C# 在ajax请求期间更新会话,然后在视图中访问会话

C# 在ajax请求期间更新会话,然后在视图中访问会话,c#,asp.net-mvc,session,kendo-grid,asp.net-ajax,C#,Asp.net Mvc,Session,Kendo Grid,Asp.net Ajax,会话[SelectedRecords]用于包含所选记录的Id,例如 SelectedRecords: 1108392 1108393 1108394 当我发出一篇ajax帖子,从会话[SelectedRecords]中删除id时,就服务器端而言,它成功地从会话[SelectedRecords]中删除了id List<int> ids = SessionHelper.GetSelectedRecordIds(); ids.Remove(selectedItemModel.Id);

会话[SelectedRecords]用于包含所选记录的Id,例如

SelectedRecords: 1108392 1108393 1108394
当我发出一篇ajax帖子,从会话[SelectedRecords]中删除id时,就服务器端而言,它成功地从会话[SelectedRecords]中删除了id

List<int> ids = SessionHelper.GetSelectedRecordIds();

ids.Remove(selectedItemModel.Id);

string csv = string.Join<int>(",", ids);

this.Session["SelectedRecords"] = csv;
但是console.log显示,就客户端而言,会话[SelectedRecords]仍然包含删除的id


所以问题是,当我通过ajax post从会话[SelectedRecords]中删除一个值,然后在视图中访问会话[SelectedRecords]时,视图报告的是“旧”值,即不是最新的值

通常,当您在会话中有一个对象并且发布了删除时,您还必须将其从会话中删除。如下所示:

Session.Remove("key");
其中key是用于在会话中存储项目的唯一密钥

但是,在您的情况下,这将不起作用。你必须做两件事:

从会话中删除选定的记录。 在会话中添加新的SelectedRecords,其中不包括您在发布时删除的记录。 这样做之后,更新之后,代码中似乎已经有了这种逻辑,您必须将新的SelectedRecords返回给客户端,并用新的值替换旧的值

大概是这样的:

$("#selectedRecords").val(newSelectedRecords)

以上内容应该在AJAX调用的成功回调中执行

事实上,我正在服务器端ajax帖子中将其从会话中删除,然后根据我上面的代码编辑将其添加到会话中。。。现在看。。。我正在使用onRequestEnd进行此操作,并且以前尝试过OnDataBound。。。请参阅我刚才添加的OnRequestEnd函数。
$("#selectedRecords").val(newSelectedRecords)