亚洲精品久久久久久一区二区,亚洲乱码av中文一区二区,欧美性猛交╳xxx乱大交,成人h动漫精品一区二区,亚洲熟女综合色一区二区三区

知識學(xué)堂
  • ·聯(lián)系電話:+86.023-75585550
  • ·聯(lián)系傳真:+86.023-75585550
  • ·24小時手機:13896886023
  • ·QQ 咨 詢:361652718 513960520
當(dāng)前位置 > 首頁 > 知識學(xué)堂 > 網(wǎng)站建設(shè)知識
Asp.Net中用iframe解決模態(tài)窗口文件下載問題(轉(zhuǎn))(asp)
更新時間:2012-04-30 | 發(fā)布人:本站 | 點擊率:530

最近在項目中經(jīng)常用到模態(tài)窗口(showModalDialog),客戶需要在一個模態(tài)窗口中有"生成Excel報表"并"導(dǎo)出"的功能。接到任務(wù)后,直接就開始按常規(guī)操作實現(xiàn)。
    在按鈕的Click事件中,根據(jù)模板生成Excel報表,填充數(shù)據(jù),保存到臨時文件夾,然后用Response.WriteFile函數(shù)輸出文件,一切看上去都很順利。代碼如下:

            //根據(jù).net數(shù)據(jù)集創(chuàng)建Excel報表并返回Excel報表路徑
            string fileName = CreateExcel(ds);
            Response.Clear();
            Response.Charset = "utf-8";
            Response.Buffer = true;
            this.EnableViewState = false;
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            //設(shè)置輸出文件類型為excel文件。
            Response.ContentType = "application/ms-excel";
            Response.WriteFile(fileName);
            Response.Flush();
            Response.Close();
            Response.End();

    但是當(dāng)完成了代碼,開始測試的時候,卻發(fā)現(xiàn)點擊"導(dǎo)出"按鈕沒有反應(yīng)。開始的時候以為是創(chuàng)建Excel報表的代碼有問題,但經(jīng)過調(diào)試后,證實創(chuàng)建Excel代碼沒有問題,也成功的在臨時文件夾下生成了Excel報表,但是卻沒有"導(dǎo)出"報表(沒彈出下載文件對話框)。再看輸出文件的代碼,應(yīng)該也沒有問題,之前一直這樣輸出都沒有問題的。
    在百思不得其解的時候,發(fā)現(xiàn)了一個關(guān)鍵點。就是之前輸出文件成功的面頁都是一般的網(wǎng)頁窗口,而這次的操作卻是在模態(tài)窗口中。問題會不會出在這里呢?趕緊試驗了一下。把模態(tài)窗口改成了一般的網(wǎng)頁窗口,果然可以輸出文件沒問題,也成功下載了報表。
    雖然問題有點怪異,但找到了切入點和問題的關(guān)鍵所在,解決應(yīng)該就不難了。google一下,發(fā)現(xiàn)模態(tài)窗口定義了<base target="_self">,這應(yīng)該是問題所在。然后在頁面中重新定義了這個標(biāo)簽,改成了<base target="_blank">,問題成功解決,文件可以正常下載了。但這時候又來了新的問題,下載是可以了,但是卻會彈出一個新頁面,在模態(tài)窗口中下載再彈出頁面肯定影響了用戶體驗。有沒有方法在模態(tài)窗口中直接下載而不彈出新的頁面呢?既然target=_self的時候有問題,target=_blank的時候又會彈出新的頁面,這讓我想到了在框架中打開新窗口的做法。在頁面中加一個看不到的框架,然后把target設(shè)為框架名應(yīng)該可以解決。隨后在頁面中再加了一個大小為0的iframe

<iframe></iframe><!--用.net的iframe模擬文件下載-->
然后重新修改<base>標(biāo)簽target為框架名:

<base target="download">

 [asp-net]ElMAH(ASP.NET錯誤日志記錄與通知)系列文章-基礎(chǔ)應(yīng)用 (佚名,04-20)

> ElMAH(ASP.NET錯誤日志記錄與通知)系列文章-基礎(chǔ)應(yīng)用篇     最近在研究幾個ASP.NET的開源項目時,發(fā)現(xiàn)都在使用ELMAH來作為記錄整個應(yīng)用程序的錯誤日志,于是拿來小研究了一下,在這里和各位分享一下,如果有使用過的,請多指教。 ……


 [asp-net]gridview 導(dǎo)出excel代碼,以及關(guān)于亂碼問題 (佚名,05-20)

Body>         /// <summary>        /// 導(dǎo)出Excel方法   &nb……


 [asp-net]分頁字符串 (佚名,04-28)

Body> /// <summary>        /// 獲取分頁字符串(通用)        /// </summary>……


 [asp-net]存儲過程的封裝 (佚名,08-11)

> 存儲過程的封裝 只是做一個例子,別的可以仿照下面的例子改改就好了。 代碼<!--Code highlighting produced by Actipro CodeHighlighter (freeware)……


 [asp-net]開貼說說文本編輯器的那些事情-捕獲輸入內(nèi)容 (佚名,07-02)

> 開貼說說文本編輯器的那些事情-捕獲輸入內(nèi)容原本應(yīng)該先給大家說明一下程序框架的,不過,現(xiàn)在程序框架還沒有定下來,所以暫時再給大家介紹一些具體的技術(shù)。這篇隨筆告訴大家怎么獲得輸入的內(nèi)容。     輸入內(nèi)容,隨便Google一下的話,大概會出現(xiàn)以下……