:: Kunagorn Sirikup :: C# Developer

21/8/56

Response.Redirect โดยเปิดหน้าต่างใหม่

ตัวอย่างนี้จะเป็นการสร้าง Class เพื่อเพิ่มความสามารถให้ Redirect ของ HttpResponse  โดยเปิดหน้าต่างใหม่ได้ เริ่มต้นผมจะสร้าง Class ResonseHelper เป็น static class แล้วให้เขียน Code ดังนี้


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;

/// <summary>
/// Summary description for ResponseHelper
/// </summary>
public static class ResponseHelper
{
    public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
    {
        if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
        {
            response.Redirect(url);
        }
        else
        {
            Page page = (Page)HttpContext.Current.Handler;

            if (page == null)
            {
                throw new InvalidOperationException("Cannot redirect to new window outside Page context.");
            }
            url = page.ResolveClientUrl(url);

            string script;
            if (!String.IsNullOrEmpty(windowFeatures))
            {
                script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
            }
            else
            {
                script = @"window.open(""{0}"", ""{1}"");";
            }
            script = String.Format(script, url, target, windowFeatures);
            System.Web.UI.ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
        }
    }
}


ที่นี้มาดูการเรียกใช้งานกันนะครับ ผมจะยกตัวอย่างการ Redirect ไปเปิดเอกสาร pdf นะครับ

วิธีการเรียกใช้่สามารถทำได้โดยเรียกใช้คำสั่ง Response.Redirect เหมือนเดิม แต่จะสังเกตว่าจะมี overload method ให้เราสามารถเรียกใช้งานได้ โดยจะมี parameter คือ
- URL - URL หรือ Path ที่ต้องการ Redirect
- Target - รูปแบบการ Redirect เช่น _blank , _self
- WindowFeatures - รูปแบบ Popup ที่ต้องการกำหนดเอง เช่น width , height , top , scrollbar 

protected void btnHelp_Click(object sender, EventArgs e)
{
    Response.Redirect("Help.pdf", "_blank"
                       "menubar=0,scrollbars=1,width=780,height=900,top=10");
        
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น