พี่ชายของฉันเพิ่งถูกบังคับให้ใช้ Ajax ดังนั้นเขาจึงใช้ asp.net ajax เพื่อใช้งาน มันง่ายและเสร็จในไม่กี่คลิก... แต่ปัญหาก็ออกมาทันที และมันก็ขัดแย้งกับ url ของฉัน การเขียนใหม่ โมดูลการเขียนใหม่ url ของฉันฉันสร้างตัวกรองและแก้ไขปัญหาตำแหน่งการส่งแบบฟอร์มเซิร์ฟเวอร์ที่ไม่ถูกต้อง แต่ตอนนี้ตราบใดที่ฉันใช้ ajax สำหรับ postback เป็นครั้งที่สอง ข้อผิดพลาด 404 จะถูกรายงาน ฉันมาที่ cnblogs และเห็นมีคนพูดถึงปัญหานี้ และบอกว่าจริง ๆ แล้วสามารถแก้ไขได้ด้วยการปรับเปลี่ยนการกระทำ ฉันสับสนมาก ฉันแก้ไขปัญหาการดำเนินการไปนานแล้วและดูเหมือนว่าจะดีที่สุด วิธีแก้ปัญหา... ดังนั้นฉันจึงเปิดโปรแกรม hook ฉันบันทึกที่อยู่โพสต์สุดท้ายของ IE แต่ละรายการและพบว่าหลังจาก postback ครั้งที่สองของ Ajax ที่อยู่การส่งของเขา (ไม่ใช่การกระทำของเพจ แต่มีสิ่งที่เรียกว่า form._initialAction ที่สร้างขึ้น โดย js ภายใน aspnet ajax) จะเป็น แน่นอนว่าจะมีปัญหาหากคุณเปลี่ยนเป็นเส้นทางสัมพัทธ์ ดังนั้นหากคุณพบว่าการเขียน URL ใหม่ขัดแย้งกับ Ajax โปรดใส่ใจกับการทดสอบปัญหานี้ และอย่าปล่อยให้สิ่งต่างๆ ดำเนินไป ออนไลน์ก่อนที่จะค้นพบปัญหา...อย่าคิดว่าทุกอย่างจะเรียบร้อยดีหากคุณแก้ไขการกระทำ ...อันที่จริง ฉันคิดว่าปัญหานี้เป็นข้อบกพร่องของ "ASP.NET AJAX RC1" เหตุใดจึงต้องใช้เส้นทางสัมพัทธ์ จะดีกว่าไหมถ้าพูดตามตรงแล้วลงมือทำแทนที่จะทำสิ่งแปลก ๆ มากมาย? แน่นอน ฉันไม่เข้าใจหลักการออกแบบของเขา ฉันเดาว่าเขามีเหตุผลของตัวเอง รหัสที่เกี่ยวข้องในการแก้ปัญหานี้มีดังนี้:
<!--Ajax Script Manager-->
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script type="text/javascript">
Sys.Application.add_load (ฟังก์ชัน ()
-
แบบฟอร์ม var = 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;
-
</สคริปต์>
คุณอาจสังเกตเห็นว่าโค้ดนี้เพิ่มตัวเลขสุ่มให้กับที่อยู่ จริงๆ แล้วมันเป็นการแก้ปัญหาหลัง (ความขัดแย้งของแคชเบราว์เซอร์) แต่ก็ไม่ได้แก้ไขได้ดี - -
ตกลง ข้อขัดแย้งในการเขียนใหม่ได้รับการแก้ไขแล้ว และปัญหาที่สองก็เกิดขึ้นอีกครั้ง - - หลังจากการเก็งกำไร ฉันคิดว่ามันเป็นปัญหาแคชของเบราว์เซอร์ ฉันสร้างฟังก์ชันเพื่อเพิ่มและลบแท็ก ไม่จำเป็นต้องพูด การเพิ่มคือการใส่ ImageButton ลงใน Repeater ให้ใช้ 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