Home > Programming > ข้อแตกต่างระหว่าง Server.Transfer vs. Response.Redirect

ข้อแตกต่างระหว่าง Server.Transfer vs. Response.Redirect


System Requirement

  • ASP.NET

คำถามจากผู้อ่าน

มีถามกันเข้ามาเยอะเหมือนครับ ว่าเวลาต้องการเปลี่ยน page ใน asp.net ค่อนข้างสับสนระหว่าง Server.Transfer กับ Response.Redirect ว่าจะใช้ตัวไหนดีเพราะว่าใช้แล้วก็ได้ผลลัพธ์เหมือนกัน เลยค่อนข้างสับสน ก็ขออนุญาตอธิบายดังนี้ครับ

ก่อนอื่นต้องบอกก่อนว่า Server.Transfer หรือ Response.Redirect ก็คือการที่ Server ส่ง page ใหม่มาให้ที่ browser นั่นเองครับ ซึ่งเป็นวิธีการที่ง่ายที่สุดวิธีหนึ่งดังตัวอย่าง code ดังนี้ครับ

Response.Redirect(“products.aspx”);

หรือ

Response.Redirect(“http://www.microsoft.com”);

ส่วนการทำการของ Server.Transfer ก็จะมีการเขียนแบบเดียวกัน เช่น

Server.Transfer(“products.aspx”);

มองดูแล้วก็งงใช่ไหมครับ รู้สึกว่าไม่เห็นจะต่างกันตรงไหน เพราะว่าตอนรันก็จะให้ผลลัพธ์เหมือนกันคือทาง server จะส่ง page ใหม่มาให้เราตามที่เราต้องการ แต่ก็พอจะแยกแยะส่วนแตกต่างกันเป็นข้อๆ ได้ดังนี้ครับ

ข้อแรก – Server.Transfer จะอาศัยการทำงานที่ฝั่ง Server ทันที แทนที่จะบอกทาง Browser ให้ทำการ Redirect เลยทำให้สามารถงานได้ค่อนข้างรวดเร็ว ก็เลยมีข้อเสียคือ จะไม่สามารถ ส่ง page ที่อยู่นอกเหนือ Server ได้ จะส่งได้เฉพาะ page ที่อยู่ใน Server ตัวเองเท่านั้นครับ ดังนั้นถ้าอยากจะส่ง page ที่ไม่ได้อยู่ใน server ไปให้ทาง Browser ก็ต้องใช้ Response.Redirect ครับ เช่น

Response.Redirect(“http://www.microsoft.com”);

ข้อที่ 2 – Server.Transfer จะไม่เปลี่ยน URL เลยครับ ประมาณว่าพอเราขอ page ใหม่ ทาง Server ก็จะส่ง page ใหม่มาให้ แต่ในช่อง URL จะไม่เปลี่ยนตามชื่อของ page ใหม่ เพราะฉะนั้นก็อาจจะลำบากถ้า user ต้องการจะสร้าง bookmark เก็บไว้ครับ

แต่ก็มีข้อดีที่ Response.Redirect ทำไม่ได้ก็คือ เราสามารถที่จะกำหนด parameter ตัวที่ 2 ได้ คือ “preserveForm” ดังตัวอย่าง

Server.Transfer(“products.aspx”, true);

การกำหนดค่า “preserveForm” เป็น true จะทำให้ page ชื่อ products.aspx สามารถที่จะเข้าไป access ตัวแปร, control ที่อยู่ในหน้าแรกได้ครับ ด้วยเหตุผลเพราะว่าทั้ง 2 page อยู่ใน scope ของ Server เดียวกันนั่นเอง โดยอาจจะใช้คำสั่ง

Request.Form[“txtName”];

โดยชื่อ txtName เป็น textbox ที่อยู่ในหน้าแรกครับ

สรุปการนำไปใช้งาน

ถ้าเป็นการเปลี่ยน page ภายใน Server เดียวกัน ผมขอแนะนำ Server.Transfer จะได้ผลลัพธ์ที่รวดเร็วกว่า Response.Redirect ครับ

หลักสูตรอบรม: .net programming (click)

Categories: Programming
  1. Kanogtip
    May 29, 2010 at 18:44

    ขอบคุณสำหรับบทความดีๆ ค่ะ ^ ^

  2. ยงยุทธ
    May 29, 2010 at 20:02

    ยินดีครับ🙂

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: