首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 通用 JavaScript 輸出工具類 (ClientScript 封裝)

     編輯:ASP.NET 基礎

完整工具類

using System;
using System.Web;
using System.Web.UI;

public static class JsHelper
{
    /// 彈出警示視窗
    public static void Alert(string message, Page page)
    {
        string js = $@"<script>alert('{message.Replace("'", "\\'")}');</script>";
        Register(page, "alert", js);
    }

    /// 警示後導向新網址
    public static void AlertAndRedirect(string message, string url, Page page)
    {
        string js = $@"<script>alert('{message.Replace("'", "\\'")}');window.location.replace('{url}');</script>";
        Register(page, "AlertAndRedirect", js);
    }

    /// 瀏覽歷史前進/後退
    public static void GoHistory(int steps, Page page)
    {
        string js = $@"<script>history.go({steps});</script>";
        Register(page, "GoHistory", js);
    }

    /// 關閉目前視窗
    public static void CloseWindow()
    {
        string js = @"<script>parent.opener=null;window.close();</script>";
        HttpContext.Current.Response.Write(js);
        HttpContext.Current.Response.End();
    }

    /// 重新整理開啟者視窗並關閉自己
    public static void RefreshParent(string url, Page page)
    {
        string js = $@"<script>window.opener.location.href='{url}';window.close();</script>";
        Register(page, "RefreshParent", js);
    }

    /// 重新整理 Opener
    public static void RefreshOpener(Page page)
    {
        string js = @"<script>opener.location.reload();</script>";
        Register(page, "RefreshOpener", js);
    }

    /// 開啟指定尺寸新視窗
    public static void OpenWindow(string url, int w, int h, int top, int left, Page page)
    {
        string js = $@"<script>window.open('{url}','','height={h},width={w},top={top},left={left},location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</script>";
        Register(page, "OpenWindow", js);
    }

    /// 導向指定網址
    public static void Redirect(string url, Page page)
    {
        string js = $@"<script>window.location.replace('{url}');</script>";
        Register(page, "Redirect", js);
    }

    /// 開啟 Modal Dialog (IE 專用)
    public static void ShowModal(string url, int w, int h, int top, int left, Page page)
    {
        string features = $"dialogWidth:{w}px;dialogHeight:{h}px;dialogLeft:{left}px;dialogTop:{top}px;center:yes;help=no;resizable:no;status:no;scroll:yes";
        ShowModal(url, features, page);
    }

    public static void ShowModal(string url, string features, Page page)
    {
        string js = $@"<script>showModalDialog('{url}','','{features}');</script>";
        Register(page, "ShowModal", js);
    }

    private static void Register(Page page, string key, string script)
    {
        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), key))
            page.ClientScript.RegisterStartupScript(page.GetType(), key, script);
    }
}

使用範例

// 在 Button_Click 事件中
JsHelper.Alert("儲存成功", this);
JsHelper.AlertAndRedirect("刪除完成", "List.aspx", this);
JsHelper.OpenWindow("Detail.aspx?id=1", 800, 600, 100, 200, this);

優點

  • 統一使用 RegisterStartupScript 避免重複註冊。
  • 自動處理單引號跳脫,減少 JS 語法錯誤。
  • 集中管理常用客戶端互動模式,提升維護性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved