Asp.net實用技巧(2)

來源:互聯網
上載者:User
asp.net|技巧  

1. 在Asp.net實用技巧(1) 中提到了如何重新整理父頁面,那麼如果要重新整理父頁面的父頁面的父頁面了?那就是重新整理祖先頁面RefreshAncestorPage。

RefreshAncestorPage#region RefreshAncestorPage
        /**//// <summary>
        /// 重新整理指定的祖先頁面,注意是"祖先頁面"    
        /// </summary>        
        public static void RefreshAncestorPage(HttpResponse Response ,string targetPageTitle ,bool isCloseCurPage)//targetPageTitle 目標頁面的title
        {            
            StringBuilder scriptString = new StringBuilder();
            scriptString.Append("<script language = javascript>");
            scriptString.Append("var p = window ;");
            scriptString.Append(string.Format("while(p.document.title != '{0}')" ,targetPageTitle));
            scriptString.Append("{");            
            scriptString.Append("p = p.opener ;");
            scriptString.Append("}");            
            scriptString.Append("p.focus();");
            scriptString.Append("p.refresh();");

            if (isCloseCurPage )
            {
                scriptString.Append( " window.focus();" );
                scriptString.Append( " window.opener=null;" );
                scriptString.Append( " window.close(); " );
            }            

            scriptString.Append("</"+"script>");

            Response.Write(scriptString.ToString());
        }

        /**//*
         需要在Father頁面的html中添加如下指令碼(在Header中):
         <script language="javascript">
        function refresh()
        {
            this.location = this.location;
        }
        </script>
         */        
        #endregion

2.如何重新整理祖先頁面中的某個frame中的page了?

RefreshFrameInAncestorPage#region RefreshFrameInAncestorPage
        /**//// <summary>
        /// 重新整理指定的祖先頁面中的某個架構的內部頁面
        /// </summary>        
        public static void RefreshFrameInAncestorPage(HttpResponse Response ,string ancestorTitle ,string frameName ,string targetUrl ,bool isCloseCurPage)//targetPageTitle 目標頁面的title
        {            
            StringBuilder scriptString = new StringBuilder();
            scriptString.Append("<script language = javascript>");
            scriptString.Append("var p = window ;");
            scriptString.Append(string.Format("while(p.document.title != '{0}')" ,ancestorTitle));
            scriptString.Append("{");            
            scriptString.Append("p = p.opener ;");
            scriptString.Append("}");            
            scriptString.Append("p.focus();");
            scriptString.Append(string.Format("p.{0}.location = '{1}';" ,frameName, targetUrl));

            if (isCloseCurPage )
            {
                scriptString.Append( " window.focus();" );
                scriptString.Append( " window.opener=null;" );
                scriptString.Append( " window.close(); " );
            }            

            scriptString.Append("</"+"script>");

            Response.Write(scriptString.ToString());
        }        
        #endregion

3.如何重新整理本頁面中的其它架構了?

RefreshTargetFrameInSamePage#region RefreshTargetFrameInSamePage
        /**//// <summary>
        /// 從某一架構重新整理同一頁面中的任意一架構(包括自己所處的架構)
        /// </summary>        
        public static void RefreshTargetFrameInSamePage(HttpResponse Response ,string frameName ,string targetUrl)
        {                
            string scripStr = string.Format("<script language ='javascript'> window.parent.{0}.location= '" ,frameName) +targetUrl + "'";
            scripStr += "</"+"script>" ;            
            Response.Write(scripStr) ;
        }
        #endregion 

4.如何調用祖先頁面的指令碼?

CallAncestorScriptMethod#region CallAncestorScriptMethod
        /**//// <summary>
        /// 調用祖先頁面中的某個架構內部page的指令碼 ,如果是調用祖先頁面的指令碼,targetFrameName傳入null
        /// </summary>        
        public static void CallAncestorScriptMethod(HttpResponse Response ,string targetPageTitle ,string targetFrameName ,string methodName ,string[] paraStrs)
        {
            StringBuilder scriptString = new StringBuilder();
            scriptString.Append("<script language = javascript>");
            scriptString.Append("var p = window ;");
            scriptString.Append(string.Format("while(p.document.title != '{0}')" ,targetPageTitle));
            scriptString.Append("{");            
            scriptString.Append("p = p.opener ;");
            scriptString.Append("}");    
            if(targetFrameName != null)
            {
                if(paraStrs == null)
                {
                    scriptString.Append(string.Format("p.frames['{0}'].{1}() ;" ,targetFrameName ,methodName ));
                }
                else
                {
                    string rParaStr = string.Format("'{0}'" ,paraStrs[0]) ;
                    for(int i=1 ;i<paraStrs.Length ;i++)
                    {
                        rParaStr += string.Format(", '{0}'" ,paraStrs[i]) ;
                    }
                    scriptString.Append(string.Format("p.frames['{0}'].{1}({2}) ;" ,targetFrameName ,methodName ,rParaStr));    
                }
            }
            else
            {
                if(paraStrs == null)
                {
                    scriptString.Append(string.Format("p.{0}() ;" ,methodName ));    
                }
                else
                {
                    string rParaStr = string.Format("'{0}'" ,paraStrs[0]) ;
                    for(int i=1 ;i<paraStrs.Length ;i++)
                    {
                        rParaStr += string.Format(", '{0}'" ,paraStrs[i]) ;
                    }
                    scriptString.Append(string.Format("p.{0}({1}) ;" ,methodName ,rParaStr));        
                }
                
            }            

            scriptString.Append("</"+"script>");
            Response.Write(scriptString.ToString());
        }
        #endregion

5.如何調用本頁面中其它架構page的指令碼?

CallTargetFrameScriptMethodInSamePage#region CallTargetFrameScriptMethodInSamePage
        /**//// <summary>
        /// 調用本頁面中其它架構內部page的指令碼 ,
        /// </summary>        
        public static void CallTargetFrameScriptMethodInSamePage(HttpResponse Response ,string targetFrameName ,string methodName ,string[] paraStrs)
        {
            StringBuilder scriptString = new StringBuilder();
            scriptString.Append("<script language = javascript>");

            if(paraStrs == null)
            {
                scriptString.Append(string.Format("window.parent.{0}.{1}() ; ;" ,targetFrameName ,methodName));
            }
            else
            {
                string rParaStr = string.Format("'{0}'" ,paraStrs[0]) ;
                for(int i=1 ;i<paraStrs.Length ;i++)
                {
                    rParaStr += string.Format(", '{0}'" ,paraStrs[i]) ;
                }
                scriptString.Append(string.Format("window.parent.{0}.{1}({2}) ; ;" ,targetFrameName ,methodName ,rParaStr));    
            }
                
            scriptString.Append("</"+"script>");
            Response.Write(scriptString.ToString());
        }
        #endregion

         可見上述這些功能都是通過指令碼完成的,如果對指令碼不熟悉,是不可能做好Web開發的!




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.