Моему брату недавно пришлось использовать Ajax, поэтому он использовал asp.net ajax для его реализации. Ну, это было просто и было сделано за несколько кликов... Но проблема возникла сразу, и она конфликтовала с моим URL-адресом. перезапись. Мой модуль перезаписи URL-адресов был написан мной. Я сделал фильтр и решил проблему неправильного местоположения отправки формы сервера. Но теперь, пока я использую ajax для обратной передачи во второй раз, будет сообщаться об ошибке 404. , я зашел в cnblogs и увидел, что кто-то говорит об этой проблеме, и на самом деле сказал, что ее можно решить, изменив действие. Я был очень смущен, я давно решил проблему с действием, и это казалось лучшим. решение... Итак, я открыл программу-перехватчик, записал конечный почтовый адрес каждого IE и обнаружил, что после второй обратной передачи ajax сгенерирован его адрес отправки (не действие страницы, а что-то под названием form._initialAction). js внутри aspnet ajax) будет. Конечно, возникнут проблемы, если вы измените его на относительный путь, поэтому, если вы обнаружите, что перезапись URL-адреса конфликтует с ajax, обратите внимание на тестирование этой проблемы и не позволяйте вещам идти своим чередом. онлайн, прежде чем обнаружить проблему... Не думайте, что все будет хорошо, если вы измените действие... На самом деле, я думаю, что эта проблема является дефектом "ASP.NET AJAX RC1". Зачем использовать относительные пути? Не лучше ли быть честным и просто действовать, а не совершать столько странных вещей? Конечно, я не понимаю его принципов проектирования. Думаю, у него есть свои причины. Соответствующий код для решения этой проблемы выглядит следующим образом:
<!--Ajax Script Manager-->.
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<тип сценария="текст/javascript">
Sys.Application.add_load(функция()
{
вар форма = Sys.WebForms.PageRequestManager.getInstance()._form;
вар href = window.location.href;
если (href.indexOf("?") > 0)
{
href += "&a=" + Math.random();
}
еще
{
href += "?a=" + Math.random();
}
form._initialAction = href;
форма.действие = href;
});
</скрипт>
Возможно, вы заметили, что этот код добавляет к адресу случайное число. На самом деле он решает последнюю проблему (конфликт кэша браузера), но она не решена должным образом. . .
Хорошо, конфликт перезаписи был разрешен, и вторая проблема возникла снова. . . После спекуляций я думаю, что это проблема с кешем браузера. Я создал функцию для добавления и удаления тегов. Излишне говорить, что добавление означает размещение кнопки ImageButton в повторителе. Через событие щелчка используйте CommandName, чтобы добавить текущий тег. отправлен обратно и удален. В этот момент возникла проблема. После того, как я добавил несколько тегов и щелкнул один из них, чтобы удалить, список тегов на панели обновления вернулся к состоянию до добавления первого, поэтому я подозревал, что он был кэширован. Проблема в браузере, я тупо добавил Response.Cache.SetNoStore();
Response.Cache.SetLastModified(DateTime.Now); Надеюсь, это решит проблему, но на самом деле это бесполезно, ха-ха, поэтому я использовал приведенный выше код js, чтобы добавить случайное число в конец URL-адреса при назначении формы. _initialAction.результат по-прежнему недействителен. . . Я предполагаю, что проблема возникает, когда это случайное число не каждый раз дает эффект, но у меня действительно нет времени глубоко понимать принципы asp.net ajax, поэтому я надеюсь, что друзья, которые знают, как решить эту проблему, смогут помоги мне сначала решить это, Сяоди. Вернись и изучи еще раз.
http://www.cnblogs.com/cnlamar/archive/2007/01/08/614671.html