天天看點

轉--ASP.NET中常用輸出JS腳本的類(改進版)

        在ASP.NET中我們經常需要輸出一些JS腳本,比如彈出一個警告視窗,傳回到曆史頁面等JS功能,我看到網上流傳得比較廣的是馬先光寫的一個 JScript類,這個類基本将經常用到的JS腳本包含了,非常友善,唯一的不足是作者采用的Response.Write(string msg)的辦法,這樣造成輸出的js腳本在<html></html>标簽之外,破壞了原有XHTML的結構,是以本人在滿足原功能的情況下,對JScript類做了進一步的改善,這個改善采用了重載的辦法,增加了一個System.Web.UI.Page類的執行個體作為參數,不會影響原來的程式代碼。

整個程式的代碼如下:

轉--ASP.NET中常用輸出JS腳本的類(改進版)
轉--ASP.NET中常用輸出JS腳本的類(改進版)

代碼

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Web.UI;

/// <summary>

/// 一些常用的Js調用

/// 添加新版說明:由于舊版普遍采用Response.Write(string msg)的方式輸出js腳本,這種

/// 方式輸出的js腳本會在html元素的&lt;html&gt;&lt;/html&gt;标簽之外,破壞了整個xhtml的結構,

/// 而新版本則采用ClientScript.RegisterStartupScript(string msg)的方式輸出,不會改變xhtml的結構,

/// 不會影響執行效果。

/// 為了向下相容,是以新版本采用了重載的方式,新版本中要求一個System.Web.UI.Page類的執行個體。

/// 建立時間:2006-9-13

/// 建立者:馬先光

/// 新版作者:周公

/// 修改日期:2007-4-17

/// 修改版釋出網址: 

/// </summary>

public class JScript

{

    #region 舊版本

    /// <summary>

    /// 彈出JavaScript小視窗

    /// </summary>

    /// <param name="js">視窗資訊</param>

    public static void Alert(string message)

    {

        #region

        string js = @"<Script language='JavaScript'>

                    alert('" + message + "');</Script>";

        HttpContext.Current.Response.Write(js);

        #endregion

    }

    /// 彈出消息框并且轉向到新的URL

    /// <param name="message">消息内容</param>

    /// <param name="toURL">連接配接位址</param>

    public static void AlertAndRedirect(string message, string toURL)

        string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";

        HttpContext.Current.Response.Write(string.Format(js, message, toURL));

    /// 回到曆史頁面

    /// <param name="value">-1/1</param>

    public static void GoHistory(int value)

                    history.go({0});  

                  </Script>";

        HttpContext.Current.Response.Write(string.Format(js, value));

    /// 關閉目前視窗

    public static void CloseWindow()

                    parent.opener=null;window.close();  

        HttpContext.Current.Response.End();

    /// 重新整理父視窗

    public static void RefreshParent(string url)

                    window.opener.location.href='" + url + "';window.close();</Script>";

    /// 重新整理打開視窗

    public static void RefreshOpener()

                    opener.location.reload();

    /// 打開指定大小的新窗體

    /// <param name="url">位址</param>

    /// <param name="width">寬</param>

    /// <param name="heigth">高</param>

    /// <param name="top">頭位置</param>

    /// <param name="left">左位置</param>

    public static void OpenWebFormSize(string url, int width, int heigth, int top, int left)

        string js = @"<Script language='JavaScript'>window.open('" + url + @"','','height=" + heigth + ",width=" + width + ",top=" + top + ",left=" + left + ",location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script>";

    /// 轉向Url制定的頁面

    /// <param name="url">連接配接位址</param>

    public static void JavaScriptLocationHref(string url)

                    window.location.replace('{0}');

        js = string.Format(js, url);

    /// 打開指定大小位置的模式對話框

    /// <param name="webFormUrl">連接配接位址</param>

    /// <param name="height">高</param>

    /// <param name="top">距離上位置</param>

    /// <param name="left">距離左位置</param>

    public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left)

        string features = "dialogWidth:" + width.ToString() + "px"

            + ";dialogHeight:" + height.ToString() + "px"

            + ";dialogLeft:" + left.ToString() + "px"

            + ";dialogTop:" + top.ToString() + "px"

            + ";center:yes;help=no;resizable:no;status:no;scroll=yes";

        ShowModalDialogWindow(webFormUrl, features);

    /// 彈出模态視窗

    /// <param name="webFormUrl"></param>

    /// <param name="features"></param>

    public static void ShowModalDialogWindow(string webFormUrl, string features)

        string js = ShowModalDialogJavascript(webFormUrl, features);

    /// <returns></returns>

    public static string ShowModalDialogJavascript(string webFormUrl, string features)

        string js = @"<script language=javascript>                            

                            showModalDialog('" + webFormUrl + "','','" + features + "');</script>";

        return js;

    #endregion

    #region 新版本

    public static void Alert(string message, Page page)

        //HttpContext.Current.Response.Write(js);

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))

        {

            page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);

        }

    public static void AlertAndRedirect(string message, string toURL, Page page)

        //HttpContext.Current.Response.Write(string.Format(js, message, toURL));

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "AlertAndRedirect"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "AlertAndRedirect", string.Format(js, message, toURL));

    public static void GoHistory(int value, Page page)

        //HttpContext.Current.Response.Write(string.Format(js, value));

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "GoHistory"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "GoHistory", string.Format(js, value));

    //        /// <summary>

    //        /// 關閉目前視窗

    //        /// </summary>

    //        public static void CloseWindow()

    //        {

    //            #region

    //            string js = @"<Script language='JavaScript'>

    //                    parent.opener=null;window.close();  

    //                  </Script>";

    //            HttpContext.Current.Response.Write(js);

    //            HttpContext.Current.Response.End();

    //            #endregion

    //        }

    public static void RefreshParent(string url, Page page)

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshParent"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshParent", js);

    public static void RefreshOpener(Page page)

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshOpener"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshOpener", js);

    public static void OpenWebFormSize(string url, int width, int heigth, int top, int left, Page page)

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "OpenWebFormSize"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "OpenWebFormSize", js);

    public static void JavaScriptLocationHref(string url, Page page)

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "JavaScriptLocationHref"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "JavaScriptLocationHref", js);

    public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left, Page page)

        ShowModalDialogWindow(webFormUrl, features, page);

    public static void ShowModalDialogWindow(string webFormUrl, string features, Page page)

        if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "ShowModalDialogWindow"))

            page.ClientScript.RegisterStartupScript(page.GetType(), "ShowModalDialogWindow", js);

    //        /// 彈出模态視窗

    //        /// <param name="webFormUrl"></param>

    //        /// <param name="features"></param>

    //        /// <returns></returns>

    //        public static string ShowModalDialogJavascript(string webFormUrl, string features)

    //            string js = @"<script language=javascript>                            

    //    showModalDialog('" + webFormUrl + "','','" + features + "');</script>";

    //            return js;

}

下一篇: js

繼續閱讀