동생이 최근 Ajax를 강제로 사용하게 되어서 asp.net ajax를 이용해서 구현을 했는데요 뭐 간단하고 몇번의 클릭만으로 끝이었는데... 문제는 바로 나오더니 제 URL과 충돌이 나더군요. 내 URL 재작성 모듈을 직접 작성했는데, 서버 양식의 잘못된 제출 위치 문제를 해결했습니다. 하지만 이제 두 번째로 포스트백에 ajax를 사용하면 404 오류가 발생합니다. .. cn블로그에 와서 이 문제에 대해 말하는 사람을 봤는데 사실 액션을 수정하면 해결이 된다고 하더군요. 굉장히 헷갈렸는데, 액션 문제는 오래전에 해결했는데, 제일 좋은 것 같더라고요. 해결 방법... 그래서 후크 프로그램을 열고 각 IE의 최종 게시물 주소를 캡처한 다음 ajax의 두 번째 포스트백 이후에 그의 제출 주소(페이지의 작업이 아니라 form._initialAction이라는 항목이 생성됨)를 발견했습니다. by js inside aspnet ajax)가 될 것입니다. 물론 상대 경로로 변경하면 문제가 발생하므로 URL 재작성이 ajax와 충돌하는 것을 발견한 경우 이 문제를 주의 깊게 테스트해 보시고 놔두지 마십시오. 문제를 발견하기 전에...액션을 수정하면 모든 것이 괜찮을 것이라고 생각하지 마십시오....사실 이 문제는 "ASP.NET AJAX RC1"의 결함이라고 생각합니다. 그렇게 이상한 일을 많이 하는 것보다는 솔직하게 행동을 취하는 것이 더 낫지 않을까요? 물론 나는 그의 디자인 원칙을 이해하지 못한다. 이 문제를 해결하기 위한 관련 코드는 다음과 같다.
<!--Ajax Script Manager-->
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<스크립트 유형="텍스트/자바스크립트">
Sys.Application.add_load(함수()
{
var form = Sys.WebForms.PageRequestManager.getInstance()._form;
var href = window.location.href;
if(href.indexOf("?") > 0)
{
href += "&a=" + Math.random();
}
또 다른
{
href += "?a=" + Math.random();
}
form._initialAction = href;
form.action = href;
});
</script>
이 코드는 주소에 임의의 숫자를 추가하는 것을 눈치채셨을 것입니다. 이는 실제로 후자의 문제(브라우저 캐시 충돌)를 해결하기 위한 것이지만 잘 해결되지는 않습니다. . .
자, 다시 쓰기 충돌이 해결되었고 두 번째 문제가 다시 발생했습니다. . . 추측해보니 브라우저 캐시 문제인 것 같습니다. 태그를 추가하고 삭제하는 기능을 만들었습니다. 말할 필요도 없이 추가는 Click 이벤트를 통해 CommandName을 사용하여 현재 태그를 추가하는 것입니다. 이때 문제가 발생했습니다. 여러 개의 태그를 추가하고 그 중 하나를 클릭하여 삭제했는데, 업데이트 패널의 태그 목록이 첫 번째 태그를 추가하기 전 상태로 돌아가서 캐시된 것으로 의심됩니다. 문제는 서버 코드에 어리석게도 Response.Cache.SetNoStore();를 추가한 것입니다.
Response.Cache.SetLastModified(DateTime.Now); 문제가 해결되었으면 좋겠지만 사실 별 소용이 없군요 ㅎㅎ 그래서 양식을 할당할 때 위의 js 코드를 사용하여 URL 끝에 임의의 숫자를 추가했습니다. _initialAction.number, 결과가 여전히 유효하지 않습니다. . . 이 난수가 매번 효과를 얻지 못해서 문제가 발생하는 것 같은데, asp.net ajax의 원리를 깊이있게 이해할 시간이 정말 없어서 이 문제를 해결하는 방법을 아는 친구들이 먼저 문제를 해결하도록 도와주세요. Xiaodi 돌아가서 다시 공부하세요.
http://www.cnblogs.com/cnlamar/archive/2007/01/08/614671.html