اضطر أخي مؤخرًا إلى استخدام Ajax، لذلك استخدم asp.net ajax لتنفيذه. حسنًا، كان الأمر بسيطًا، وتم تنفيذه ببضع نقرات... لكن المشكلة ظهرت على الفور، وتعارضت مع عنوان URL الخاص بي. إعادة كتابة وحدة إعادة كتابة عنوان url الخاصة بي بنفسي، لقد قمت بعمل فلتر وحل مشكلة موقع الإرسال غير الصحيح لنموذج الخادم، ولكن الآن، طالما أنني أستخدم ajax لإعادة النشر للمرة الثانية، فسيتم الإبلاغ عن خطأ 404 ، لقد جئت إلى cnblogs ورأيت شخصًا يتحدث عن هذه المشكلة، وقلت بالفعل إنه يمكن حلها عن طريق تعديل الإجراء. لقد كنت في حيرة من أمري، لقد قمت بحل مشكلة الإجراء منذ وقت طويل، ويبدو أنها الأفضل الحل... لذلك فتحت برنامج ربط، والتقطت عنوان النشر النهائي لكل IE، ووجدت أنه بعد إعادة النشر الثانية لـ ajax، تم إنشاء عنوان الإرسال الخاص به (ليس إجراء الصفحة، ولكن تم إنشاء شيء يسمى form._initialAction). بواسطة js داخل aspnet ajax) سيكون بالطبع، ستكون هناك مشاكل إذا قمت بتغييره إلى مسار نسبي، لذلك إذا وجدت أن إعادة كتابة عنوان url تتعارض مع ajax، فيرجى الانتباه إلى اختبار هذه المشكلة، ولا تترك الأمور تسير عبر الإنترنت قبل اكتشاف المشكلة...لا تعتقد أن كل شيء سيكون على ما يرام إذا قمت بتعديل الإجراء....في الواقع، أعتقد أن هذه المشكلة هي عيب في "ASP.NET AJAX RC1". ألن يكون من الأفضل أن نكون صادقين ونتخذ الإجراء بدلاً من القيام بالكثير من الأشياء الغريبة؟ بالطبع، لا أفهم مبادئ التصميم الخاصة به، وأعتقد أن لديه أسبابه الخاصة. الكود المناسب لحل هذه المشكلة هو كما يلي:
<نوع البرنامج النصي = "نص/جافا سكريبت">
Sys.Application.add_load(function())
{
var form = Sys.WebForms.PageRequestManager.getInstance()._form;
var href = window.location.href;
إذا (href.indexOf("؟") > 0)
{
href += "&a=" + Math.random();
}
آخر
{
href += "?a=" + Math.random();
}
form._initialAction = href;
form.action = href;
});
ربما لاحظت أن هذا الرمز يضيف رقمًا عشوائيًا إلى العنوان، وهو في الواقع حل المشكلة الأخيرة (تعارض ذاكرة التخزين المؤقت للمتصفح)، لكنه لم يتم حلها بشكل جيد. . .
حسنًا، تم حل التعارض في إعادة الكتابة، وحدثت المشكلة الثانية مرة أخرى. . . بعد التكهنات، أعتقد أنها مشكلة في ذاكرة التخزين المؤقت للمتصفح، لقد قمت بإنشاء وظيفة لإضافة العلامات وحذفها تم إرسالها وحذفها في هذا الوقت، حدثت المشكلة بعد أن قمت بإضافة علامات متعددة والنقر فوق واحدة منها لحذفها، عادت قائمة العلامات في لوحة التحديث إلى الحالة قبل إضافة العلامة الأولى، لذلك اشتبهت في أنه تم تخزينها مؤقتًا بواسطة. مشكلة في المتصفح، لقد قمت بغباء بإضافة 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