2017-01-18 11 views
0

セッション["SelectedRecords"]は、選択されたレコードのIDを格納するために使用されます。ajaxリクエスト中にセッションを更新し、ビュー内のセッションにアクセス

SelectedRecords: 1108392 1108393 1108394 

私は限り、サーバー側が正常に懸念しているセッションからIDを削除し、セッションからIDを削除するAjaxのポスト[「SelectedRecords」] [「SelectedRecords」] ...

を発射
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が含まれている)ことを示して

私はから値を削除するとそこで質問ですSession ["SelectedRecords"]をajaxポスト経由で開き、その後Session ["SelectedRecords"]ビューにアクセスすると、ビューは 'old'値、すなわち最新値ではないことを報告していますか?

答えて

1

一般に、セッションに1つのオブジェクトがあり、削除をPOSTすると、セッションから削除する必要があります。これは以下のように行われます。

キーはあなたが Sessionにアイテムを格納するために使用している一意のキーである
Session.Remove("key"); 

あなたの場合、これは動作しません。

  • セッションからSelectedRecordsを削除します。
  • 新しいSelectedRecords(POSTで削除したレコードは1つもありません)をセッションに追加します。

更新後、既にこのロジックがコード内にあるようですが、新しいSelectedRecordsをクライアントに返して、古い値を新しいものに置き換えなければなりません。このような

何か:

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

上記のあなたのAJAX呼び出しの成功コールバックで実行する必要があります。

+0

確かに、私はそれをセッション(サーバー側のajax投稿)から削除して、上記のコード編集に従ってセッションに追加しています。 –

+0

「Bitty」のアップデートは申し訳ありません。今すぐ参照してください。これはonRequestEndを使用しています。以前はOnDataBoundを試しましたが、今追加したOnRequestEnd関数を参照してください。 –

関連する問題