2012-09-21 2 views
2

ASP.NET MVC 뷰에 Wijmo Tree이 있습니다. 각 treenode의 checkstate가 내 데이터베이스에 저장됩니다. 트리가로드되면 리턴 된 데이터에 따라 각 노드가 점검되거나 선택 취소됩니다. 트리의 nodeCheckChanged이 호출되면 ajax를 사용하여 컨트롤러에서 내 데이터를 성공적으로 변경하는 액션을 호출합니다.IE 서버에서 반환 된 이전 데이터 캐싱

트 리뷰를 다시로드 할 때 문제가 발생합니다. 데이터가 데이터베이스에 저장되었지만 브라우저가 서버의 최신 데이터를 가져 오지 않습니다.

IE의 모든 버전에서만 문제가 발생합니다. Firefox와 Chrome은 매번 작동합니다.

나는 this에서 DotNetPerls, this 같은 페이지를 보았고, 옵션 4를 시도했다 this stackoverflow 대답.

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; } 
} 

대답. 매번 같은 URL로 $ .ajax 전화가 걸려왔다. 예. "AssignedFolder/List? UserId = 12345"를 입력하십시오. IE는 다시 호출하지 않고 캐시 된 결과를 반환합니다.

이제 IE는 매번 최신 데이터를 반환해야합니다.

답변

4

IE 캐시는 모두 가져옵니다. 요청을 처리하기 위해 IE를 캐시하지 않도록 속일 필요가 있습니다. jQuery.ajax 호출을 사용하면 호출시 "cache : false"를 설정할 수 있습니다 (요청 된 URL에 무작위 타임 스탬프를 추가하기 만 함). 해당 트리에 대한 구성 옵션을 찾거나 URL을 조작 할 수있는 고리를 찾습니다 서버에서 데이터를 다시로드하고 요청한 URL에 자신의 타임 스탬프를 추가하는 데 사용됩니다.

+0

이것은 실제로 내 문제에 대한 해답이었습니다. 내 이전 의견이 잘못되었습니다. 내 $ .ajax 호출에 "cache : false"를 추가해야했습니다. 매번 같은 URL로 $ .ajax 전화가 걸려왔다. 예. "AssignedFolder/List? UserId = 12345"를 입력하십시오. IE는 다시 호출하지 않고 캐시 된 결과를 반환합니다. – Robert