2

ASP.NET MVC ビューに Wijmo ツリーがあります各ツリーノードのチェックステートはデータベースに保存されます。ツリーがロードされると、返されたデータに応じて各ノードがチェックまたはチェック解除されます。ツリーでnodeCheckChangedが呼び出されると、ajax を使用してコントローラーでアクションを呼び出し、データを正常に変更します。

ツリービューをリロードすると問題が発生します。データはデータベースに保存されていますが、ブラウザはサーバーから最新のデータを取得していません。

IEのすべてのバージョンでのみ問題が発生します。Firefox と Chrome はいつでも動作します。

DotNetPerls のこのようなページ、Microsoft のこのようなページを見て、このスタックオーバーフローの回答でオプション 4 を試しました。

IE で最新のデータを取得する唯一の方法は、[開発者ツール] -> [キャッシュ] -> [サーバーから常に更新] オプションを true に設定することです。

IE が他のブラウザーのようにデータをリロードするにはどうすればよいですか?

この質問を読んでくれてありがとう!

編集

ツリーのデータは、モデルのコレクションから取得されます。このコレクションは、アクションによって取り込まれます。

私の行動:

public ActionResult List(AssignedFolderListModel model)
{
    //Using EntityFramework
    model.TopLevelFolders = db.Folders;
    return PartialView(model);
}

私のモデル:

public class AssignedFolderListModel
{
    public string UserId { get; set; }
    public IEnumerable<Folder> TopLevelFolders { get; set; }
    public Guid[] AssignedFolderIds { get; set; }
}

答え

$.ajax 呼び出しに「cache: false」を追加する必要がありました。$.ajax 呼び出しは毎回同じ URL に対して行われています。例えば。"AssignedFolder/List?UserId=12345". IE は再度呼び出しを行うのではなく、キャッシュされた結果を返していました。

現在、IE は毎回最新のデータを返すよう強制されています。

4

1 に答える 1

5

IE はすべての取得をキャッシュします。IE がキャッシュしないようにだますには、リクエストに対して何かを行う必要があります。jQuery.ajax呼び出しを使用すると、呼び出しで "cache: false" を設定できます (これは、要求された URL にランダムなタイムスタンプを追加するだけです) - そのツリーでそれを行うための構成オプション、または操作できるフックを探します。サーバーからデータをリロードするために使用される URL (および要求された URL に独自のタイムスタンプを追加します)。

于 2012-09-21T01:23:51.240 に答える